diff options
Diffstat (limited to 'utils/generate-command-help.rb')
-rwxr-xr-x | utils/generate-command-help.rb | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/utils/generate-command-help.rb b/utils/generate-command-help.rb new file mode 100755 index 000000000..250a2159e --- /dev/null +++ b/utils/generate-command-help.rb @@ -0,0 +1,56 @@ +#!/usr/bin/env ruby + +require 'net/http' +require 'net/https' +require 'json' +require 'uri' + +dest = ARGV[0] +tmpl = File.read './utils/help.h' + +url = URI.parse 'https://github.com/antirez/redis-doc/raw/master/commands.json' +client = Net::HTTP.new url.host, url.port +client.use_ssl = true +res = client.get url.path + +def argument arg + name = arg['name'].is_a?(Array) ? arg['name'].join(' ') : arg['name'] + name = arg['enum'].join '|' if 'enum' == arg['type'] + name = arg['command'] + ' ' + name if arg['command'] + if arg['multiple'] + name = "(#{name})" + name += arg['optional'] ? '*' : '+' + elsif arg['optional'] + name = "(#{name})?" + end + name +end + +def arguments command + return '-' unless command['arguments'] + command['arguments'].map do |arg| + argument arg + end.join ' ' +end + +case res +when Net::HTTPSuccess + first = true + commands = JSON.parse(res.body) + c = commands.map do |key, command| + buf = if first + first = false + ' ' + else + "\n ," + end + buf += " { \"#{key}\"\n" + + " , \"#{arguments(command)}\"\n" + + " , \"#{command['summary']}\"\n" + + " , COMMAND_GROUP_#{command['group'].upcase}\n" + + " , \"#{command['since']}\" }" + end.join("\n") + puts "\n// Auto-generated, do not edit.\n" + tmpl.sub('__COMMANDS__', c) +else + res.error! +end
\ No newline at end of file |