20862: Add 'sdk/ruby-google-api-client/' from commit '2f4be67955e48bb65d008ecd9ff6da9...
[arvados.git] / sdk / ruby-google-api-client / rakelib / wiki.rake
diff --git a/sdk/ruby-google-api-client/rakelib/wiki.rake b/sdk/ruby-google-api-client/rakelib/wiki.rake
new file mode 100644 (file)
index 0000000..3e0d97d
--- /dev/null
@@ -0,0 +1,82 @@
+require 'rake'
+require 'rake/clean'
+
+CLOBBER.include('wiki')
+
+CACHE_PREFIX =
+  "http://www.gmodules.com/gadgets/proxy/container=default&debug=0&nocache=0/"
+
+namespace :wiki do
+  desc 'Autogenerate wiki pages'
+  task :supported_apis do
+    output = <<-WIKI
+#summary The list of supported APIs
+
+The Google API Client for Ruby is a small flexible client library for accessing
+the following Google APIs.
+
+WIKI
+    preferred_apis = {}
+    require 'google/api_client'
+    client = Google::APIClient.new
+    for api in client.discovered_apis
+      if !preferred_apis.has_key?(api.name)
+        preferred_apis[api.name] = api
+      elsif api.preferred
+        preferred_apis[api.name] = api
+      end
+    end
+    for api_name, api in preferred_apis
+      if api.documentation.to_s != "" && api.title != ""
+        output += (
+          "||#{CACHE_PREFIX}#{api['icons']['x16']}||" +
+          "[#{api.documentation} #{api.title}]||" +
+          "#{api.description}||\n"
+        )
+      end
+    end
+    output.gsub!(/-32\./, "-16.")
+    wiki_path = File.expand_path(
+      File.join(File.dirname(__FILE__), '../wiki/'))
+    Dir.mkdir(wiki_path) unless File.exists?(wiki_path)
+    File.open(File.join(wiki_path, 'SupportedAPIs.wiki'), 'w') do |file|
+      file.write(output)
+    end
+  end
+
+  task 'generate' => ['wiki:supported_apis']
+end
+
+begin
+  $LOAD_PATH.unshift(
+    File.expand_path(File.join(File.dirname(__FILE__), '../yard/lib'))
+  )
+  $LOAD_PATH.unshift(File.expand_path('.'))
+  $LOAD_PATH.uniq!
+
+  require 'yard'
+  require 'yard/rake/wikidoc_task'
+
+  namespace :wiki do
+    desc 'Generate Wiki Documentation with YARD'
+    YARD::Rake::WikidocTask.new do |yardoc|
+      yardoc.name = 'reference'
+      yardoc.options = [
+        '--verbose',
+        '--markup', 'markdown',
+        '-e', 'yard/lib/yard-google-code.rb',
+        '-p', 'yard/templates',
+        '-f', 'wiki',
+        '-o', 'wiki'
+      ]
+      yardoc.files = [
+        'lib/**/*.rb', 'ext/**/*.c', '-', 'README.md', 'CHANGELOG.md'
+      ]
+    end
+
+    task 'generate' => ['wiki:reference', 'wiki:supported_apis']
+  end
+rescue LoadError
+  # If yard isn't available, it's not the end of the world
+  warn('YARD unavailable. Cannot fully generate wiki.')
+end