summaryrefslogtreecommitdiff
path: root/utils/generate-command-help.rb
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2010-11-28 21:37:19 +0100
committerPieter Noordhuis <pcnoordhuis@gmail.com>2010-11-28 21:37:19 +0100
commita2a69d5803d05ce9ccd2d911389b8aa28239dfba (patch)
tree0d370daa9ce93acc9625c872147fd196dc8ec3b4 /utils/generate-command-help.rb
parent50d0e82d54d9fcc7f42443a9cde51d812934b3c1 (diff)
downloadredis-a2a69d5803d05ce9ccd2d911389b8aa28239dfba.tar.gz
Refactor help-related code into redis-cli.c
Diffstat (limited to 'utils/generate-command-help.rb')
-rwxr-xr-xutils/generate-command-help.rb62
1 files changed, 57 insertions, 5 deletions
diff --git a/utils/generate-command-help.rb b/utils/generate-command-help.rb
index 4b2f25a15..f730eaf10 100755
--- a/utils/generate-command-help.rb
+++ b/utils/generate-command-help.rb
@@ -1,5 +1,24 @@
#!/usr/bin/env ruby
+GROUPS = [
+ "generic",
+ "string",
+ "list",
+ "set",
+ "sorted_set",
+ "hash",
+ "pubsub",
+ "transactions",
+ "connection",
+ "server"
+].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"]
@@ -39,21 +58,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