diff --git a/rest-api-spec/utils/Thorfile b/rest-api-spec/utils/Thorfile index 2b8f53b4f88..d0d8190a53b 100644 --- a/rest-api-spec/utils/Thorfile +++ b/rest-api-spec/utils/Thorfile @@ -1,2 +1,3 @@ require File.expand_path('./thor/generate_api') require File.expand_path('./thor/generate_source') +require File.expand_path('./thor/lister') diff --git a/rest-api-spec/utils/thor/lister.rb b/rest-api-spec/utils/thor/lister.rb new file mode 100644 index 00000000000..24024940abe --- /dev/null +++ b/rest-api-spec/utils/thor/lister.rb @@ -0,0 +1,41 @@ +# encoding: UTF-8 + +require 'thor' + +require 'pathname' + +module Elasticsearch + + module API + + class Lister < Thor + namespace 'api' + + desc "list ", "List all the REST API endpoints from the JSON specification" + method_option :verbose, type: :boolean, default: false, desc: 'Output more information' + method_option :format, default: 'text', desc: 'Output format (text, json)' + def list(directory) + input = Pathname(directory).join('*.json') + apis = Dir[input.to_s].map do |f| + File.basename(f, '.json') + end.sort + + if options[:verbose] + say_status 'Count', apis.size + say '▬'*terminal_width + end + + case options[:format] + when 'text' + apis.each { |a| puts "* #{a}" } + when 'json' + puts apis.inspect + else + puts "[!] ERROR: Unknown output format '#{options[:format]}'" + exit(1) + end + end + end + + end +end