Browse Source

[UTIL] Added a utility to print the list of APIs based on the JSON filenames

Karel Minarik 12 years ago
parent
commit
3a359a1f2a
2 changed files with 42 additions and 0 deletions
  1. 1 0
      rest-api-spec/utils/Thorfile
  2. 41 0
      rest-api-spec/utils/thor/lister.rb

+ 1 - 0
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')

+ 41 - 0
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 <PATH DIRECTORY WITH JSON SPEC FILES>", "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