X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/50d0e82d54d9fcc7f42443a9cde51d812934b3c1..4468ba231785fe9fda26f2d05181f91342d91c2d:/utils/generate-command-help.rb diff --git a/utils/generate-command-help.rb b/utils/generate-command-help.rb index 4b2f25a1..f6ca8874 100755 --- a/utils/generate-command-help.rb +++ b/utils/generate-command-help.rb @@ -1,5 +1,25 @@ #!/usr/bin/env ruby +GROUPS = [ + "generic", + "string", + "list", + "set", + "sorted_set", + "hash", + "pubsub", + "transactions", + "connection", + "server", + "scripting" +].freeze + +GROUPS_BY_NAME = Hash[* + GROUPS.each_with_index.map do |n,i| + [n,i] + end.flatten +].freeze + def argument arg name = arg["name"].is_a?(Array) ? arg["name"].join(" ") : arg["name"] name = arg["enum"].join "|" if "enum" == arg["type"] @@ -23,12 +43,13 @@ end def commands return @commands if @commands + require "rubygems" require "net/http" require "net/https" require "json" require "uri" - url = URI.parse "https://github.com/antirez/redis-doc/raw/master/commands.json" + url = URI.parse "https://raw.github.com/antirez/redis-doc/master/commands.json" client = Net::HTTP.new url.host, url.port client.use_ssl = true response = client.get url.path @@ -39,21 +60,54 @@ def commands end 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| - <<-SPEC + 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"]}", - COMMAND_GROUP_#{command["group"].upcase}, + #{group}, "#{command["since"]}" } SPEC - end.join(", ") + ret.strip + end.join(",\n ") end # Write to stdout -tmpl = File.read "./utils/help.h" -puts "\n// Auto-generated, do not edit.\n" + tmpl.sub("__COMMANDS__", generate_commands) +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