diff options
Diffstat (limited to 'utils/generate-command-help.rb')
-rwxr-xr-x | utils/generate-command-help.rb | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/utils/generate-command-help.rb b/utils/generate-command-help.rb deleted file mode 100755 index 1042ce6d2..000000000 --- a/utils/generate-command-help.rb +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env ruby -w -# Usage: generate-command-help.r [path/to/commands.json] -# or: generate-commands-json.py | generate-command-help.rb - -# -# Defaults to downloading commands.json from the redis-doc repo if not provided -# or STDINed. - -GROUPS = [ - "generic", - "string", - "list", - "set", - "sorted-set", - "hash", - "pubsub", - "transactions", - "connection", - "server", - "scripting", - "hyperloglog", - "cluster", - "geo", - "stream", - "bitmap" -].freeze - -GROUPS_BY_NAME = Hash[* - GROUPS.each_with_index.map do |n,i| - [n,i] - end.flatten -].freeze - -def argument arg - if "block" == arg["type"] - name = arg["arguments"].map do |entry| - argument entry - end.join " " - elsif "oneof" == arg["type"] - name = arg["arguments"].map do |entry| - argument entry - end.join "|" - elsif "pure-token" == arg["type"] - name = nil # prepended later - else - name = arg["name"].is_a?(Array) ? arg["name"].join(" ") : arg["name"] - end - if arg["multiple"] - if arg["multiple_token"] - name = "#{name} [#{arg["token"]} #{name} ...]" - else - name = "#{name} [#{name} ...]" - end - end - if arg["token"] - name = [arg["token"], name].compact.join " " - end - if arg["optional"] - name = "[#{name}]" - end - name -end - -def arguments command - return "" unless command["arguments"] - command["arguments"].map do |arg| - argument arg - end.join " " -end - -def commands - return @commands if @commands - - require "rubygems" - require "net/http" - require "net/https" - require "json" - require "uri" - if ARGV.length > 0 - if ARGV[0] == '-' - data = STDIN.read - elsif FileTest.exist? ARGV[0] - data = File.read(ARGV[0]) - else - raise Exception.new "File not found: #{ARGV[0]}" - end - else - url = URI.parse "https://raw.githubusercontent.com/redis/redis-doc/master/commands.json" - client = Net::HTTP.new url.host, url.port - client.use_ssl = true - response = client.get url.path - if !response.is_a?(Net::HTTPSuccess) - response.error! - return - else - data = response.body - end - end - @commands = JSON.parse(data) -end - -def generate_groups - GROUPS.map do |n| - "\"#{n}\"" - end.join(",\n "); -end - -def generate_commands - commands.to_a.sort do |x,y| - x[0] <=> y[0] - end.map do |key, command| - group = GROUPS_BY_NAME[command["group"]] - if group.nil? - STDERR.puts "Please update groups array in #{__FILE__}" - raise "Unknown group #{command["group"]}" - end - - ret = <<-SPEC -{ "#{key}", - "#{arguments(command)}", - "#{command["summary"]}", - #{group}, - "#{command["since"]}" } - SPEC - ret.strip - end.join(",\n ") -end - -# Write to stdout -puts <<-HELP_H -/* Automatically generated by #{__FILE__}, do not edit. */ - -#ifndef __REDIS_HELP_H -#define __REDIS_HELP_H - -static char *commandGroups[] = { - #{generate_groups} -}; - -struct commandHelp { - char *name; - char *params; - char *summary; - int group; - char *since; -} commandHelp[] = { - #{generate_commands} -}; - -#endif -HELP_H - |