Added task for wiki autogeneration.
authorBob Aman <bobaman@google.com>
Sat, 15 Oct 2011 08:22:36 +0000 (11:22 +0300)
committerBob Aman <bobaman@google.com>
Sat, 15 Oct 2011 08:22:59 +0000 (11:22 +0300)
.gitignore
lib/google/api_client/discovery/api.rb
tasks/wiki.rake [new file with mode: 0644]

index 767ccf92123795d81667d4d1e6b250640545179b..4500102b82a70e82d63d2cca7d49cd4107e35ee8 100644 (file)
@@ -6,4 +6,5 @@ doc
 heckling
 pkg
 specdoc
+wiki
 .google-api.yaml
index 92477fc7f86abe731f13c20bef1cfa667da25647..44b245a474495179993437238c92d6405eb9e2dc 100644 (file)
@@ -82,14 +82,29 @@ module Google
       end
 
       ##
-      # Returns the parsed section of the discovery document that applies to
-      # this version of the service.
+      # Returns a human-readable title for the API.
       #
-      # @return [Hash] The service description.
+      # @return [Hash] The API title.
+      def title
+        return @discovery_document['title']
+      end
+
+      ##
+      # Returns a human-readable description of the API.
+      #
+      # @return [Hash] The API description.
       def description
         return @discovery_document['description']
       end
 
+      ##
+      # Returns a URI for the API documentation.
+      #
+      # @return [Hash] The API documentation.
+      def documentation
+        return Addressable::URI.parse(@discovery_document['documentationLink'])
+      end
+
       ##
       # Returns true if this is the preferred version of this API.
       #
@@ -181,6 +196,12 @@ module Google
         )
       end
 
+      ##
+      # Allows deep inspection of the discovery document.
+      def [](key)
+        return @discovery_document[key]
+      end
+
       ##
       # Converts the service to a flat mapping of RPC names and method objects.
       #
diff --git a/tasks/wiki.rake b/tasks/wiki.rake
new file mode 100644 (file)
index 0000000..0bba431
--- /dev/null
@@ -0,0 +1,41 @@
+require 'google/api_client'
+
+CACHE_PREFIX =
+  "http://www.gmodules.com/gadgets/proxy/container=default&debug=0&nocache=0/"
+
+namespace :wiki do
+  desc 'Autogenerate wiki pages'
+  task :generate 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 = {}
+    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
+      output += (
+        "||#{CACHE_PREFIX}#{api['icons']['x16']}||" +
+        "[#{api.documentation} #{api.title}]||" +
+        "#{api.description}||\n"
+      )
+    end
+    wiki_path = File.expand_path(
+      File.join(File.dirname(__FILE__), '../wiki/'))
+    Dir.mkdir(wiki_path) if !File.exist?(wiki_path)
+    File.open(File.join(wiki_path, 'SupportedAPIs.wiki'), 'w') do |file|
+      file.write(output)
+    end
+  end
+end
+
+# task 'clobber' => ['wiki:clobber_wiki']