You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by se...@apache.org on 2016/08/20 21:06:16 UTC

[whimsy] branch master updated: Initial implementation of podlings.xml as JSON output

This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/whimsy.git

The following commit(s) were added to refs/heads/master by this push:
       new  f68af09   Initial implementation of podlings.xml as JSON output
f68af09 is described below

commit f68af09273e23c35bc3f58e0cbc5f14168cb71ff
Author: Sebb <se...@apache.org>
AuthorDate: Sat Aug 20 22:06:08 2016 +0100

    Initial implementation of podlings.xml as JSON output
---
 lib/whimsy/asf/podlings.rb    | 27 ++++++++++++++
 www/roster/public_podlings.rb | 83 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 110 insertions(+)

diff --git a/lib/whimsy/asf/podlings.rb b/lib/whimsy/asf/podlings.rb
index 7107623..bb139aa 100644
--- a/lib/whimsy/asf/podlings.rb
+++ b/lib/whimsy/asf/podlings.rb
@@ -167,6 +167,33 @@ module ASF
       return true if list.start_with?("incubator-#{_name}-")
     end
 
+    # Return the instance as a hash
+    def as_hash # might be confusing to use to_h here?
+      hash = {
+        name: @name,
+        status: status,
+        description: description,
+        mentors: mentors,
+        startdate: startdate,
+      }
+      hash[:enddate] = enddate if enddate
+      hash[:champion] = champion if champion
+
+      # Tidy up the reporting output
+      r = @reporting
+      if r.instance_of? Nokogiri::XML::Element
+        group = r['group']
+        hash[:reporting] = {
+          group: group
+        }
+        hash[:reporting][:text] = r.text if r.text.length > 0
+        hash[:reporting][:monthly] = r.text.split(/,\s*/) if r['monthly']
+      else
+        hash[:reporting] = r if r
+      end
+      hash
+    end
+
   end
 
   # more backwards compatibility
diff --git a/www/roster/public_podlings.rb b/www/roster/public_podlings.rb
new file mode 100644
index 0000000..276339a
--- /dev/null
+++ b/www/roster/public_podlings.rb
@@ -0,0 +1,83 @@
+##   Licensed to the Apache Software Foundation (ASF) under one or more
+##   contributor license agreements.  See the NOTICE file distributed with
+##   this work for additional information regarding copyright ownership.
+##   The ASF licenses this file to You under the Apache License, Version 2.0
+##   (the "License"); you may not use this file except in compliance with
+##   the License.  You may obtain a copy of the License at
+## 
+##       http://www.apache.org/licenses/LICENSE-2.0
+## 
+##   Unless required by applicable law or agreed to in writing, software
+##   distributed under the License is distributed on an "AS IS" BASIS,
+##   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+##   See the License for the specific language governing permissions and
+##   limitations under the License.
+
+# Reads the incubator podlings.xml file and generates a summary status file
+# If a second file name is provided, also generates a detailed file with all the fields
+#
+# Podling status file format:
+# {
+#   "last_updated": "2016-06-15 13:50:05 +0100",
+#   "podling": {
+#     "abdera": "graduated",
+#     ....
+#   }
+# }
+
+# Podling detailed file format:
+# {
+#   "last_updated": "2016-06-15 13:50:05 +0100",
+#   "podling": {
+#     ...
+#     "airflow": {
+#       "name": "Airflow",
+#       "resource": "airflow",
+#       "status": "current",
+#       "startdate": "2016-03-31",
+#       "description": "Airflow is a workflow automation and scheduling system that can be used to author and manage data pipelines.",
+#       "mentors": [
+#         "cnauroth",
+#         "hitesh",
+#         "jghoman"
+#       ],
+#       "reporting": { # PROVISIONAL FORMAT
+#          "group": "1",
+#          "text": "May, June, July",
+#          "monthly": [
+#            "May",
+#            "June",
+#            "July"
+#          ]
+#         },
+#         "champion": "criccomini"
+#     },
+#     "accumulo": {
+#       ...
+#     },
+#     ...
+#   }
+# }
+#
+# =====================================================
+# N.B. The "reporting" hash format is subject to change
+# =====================================================
+
+require_relative 'public_json_common'
+
+pods = Hash[ASF::Podling.list.map {|podling| [podling.name, podling.status]}]
+
+mtime =  ASF::Podling.mtime # must be after call to list()
+
+public_json_output(
+ last_updated: mtime,
+ podling: pods
+)
+
+if ARGV.length == 2
+  podh = Hash[ASF::Podling.list.map {|podling| [podling.name, podling.as_hash]}]
+  public_json_output_file({
+    last_updated: mtime,
+    podling: podh    
+  }, ARGV[1])
+end

-- 
To stop receiving notification emails like this one, please contact
['"commits@whimsical.apache.org" <co...@whimsical.apache.org>'].