浏览代码

Add --all option to docs:generate command

For generating all versions of a doc.
Thibaut Courouble 9 年之前
父节点
当前提交
caa2592e4b
共有 2 个文件被更改,包括 26 次插入9 次删除
  1. 3 2
      lib/docs.rb
  2. 23 7
      lib/tasks/docs.thor

+ 3 - 2
lib/docs.rb

@@ -75,8 +75,9 @@ module Docs
     find(name, version).store_page(store, page_id)
   end
 
-  def self.generate(name, version)
-    find(name, version).store_pages(store)
+  def self.generate(doc, version = nil)
+    doc = find(doc, version) unless doc.respond_to?(:store_pages)
+    doc.store_pages(store)
   end
 
   def self.generate_manifest

+ 23 - 7
lib/tasks/docs.thor

@@ -52,6 +52,7 @@ class DocsCLI < Thor
 
   desc 'generate <doc> [--version] [--verbose] [--debug] [--force] [--package]', 'Generate a documentation'
   option :version, type: :string
+  option :all, type: :boolean
   option :verbose, type: :boolean
   option :debug, type: :boolean
   option :force, type: :boolean
@@ -74,16 +75,20 @@ class DocsCLI < Thor
       return unless yes? 'Proceed? (y/n)'
     end
 
-    if Docs.generate(name, options[:version])
-      generate_manifest
-      if options[:package]
-        require 'unix_utils'
-        package_doc(Docs.find(name, options[:version]))
+    require 'unix_utils' if options[:package]
+
+    doc = Docs.find(name, options[:version])
+
+    result = if doc.version && options[:all]
+      doc.superclass.versions.all? do |_doc|
+        puts "==> #{_doc.version}"
+        generate_doc(_doc, package: options[:package]).tap { puts "\n" }
       end
-      puts 'Done'
     else
-      puts "Failed!#{' (try running with --debug for more information)' unless options[:debug]}"
+      generate_doc(doc, package: options[:package])
     end
+
+    generate_manifest if result
   rescue Docs::DocNotFound => error
     handle_doc_not_found_error(error)
   end
@@ -169,6 +174,17 @@ class DocsCLI < Thor
     puts 'Run "thor docs:list" to see the list of docs and versions.'
   end
 
+  def generate_doc(doc, package: nil)
+    if Docs.generate(doc)
+      package_doc(doc) if package
+      puts 'Done'
+      true
+    else
+      puts "Failed!#{' (try running with --debug for more information)' unless options[:debug]}"
+      false
+    end
+  end
+
   def download_docs(docs)
     # Don't allow downloaded files to be created as StringIO
     require 'open-uri'