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 2019/10/17 14:01:25 UTC

[whimsy] branch master updated: Use committee-info.yaml instead of parsing index.html

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 0df4749  Use committee-info.yaml instead of parsing index.html
0df4749 is described below

commit 0df47495ea111d47f9b5864124cc83a55f08bf4c
Author: Sebb <se...@apache.org>
AuthorDate: Thu Oct 17 15:01:14 2019 +0100

    Use committee-info.yaml instead of parsing index.html
    
    N.B. The initial data for committee-info.yaml
    was taken from index.html.
---
 lib/whimsy/asf/site.rb | 90 +++++++-------------------------------------------
 1 file changed, 12 insertions(+), 78 deletions(-)

diff --git a/lib/whimsy/asf/site.rb b/lib/whimsy/asf/site.rb
index 869c4e4..1d0853e 100644
--- a/lib/whimsy/asf/site.rb
+++ b/lib/whimsy/asf/site.rb
@@ -1,113 +1,47 @@
 require_relative '../asf'
-require 'nokogiri'
+require 'yaml'
 
 module ASF
 
   # A list of ASF sites, formed by parsing
-  # <tt>asf/infrastructure/site/trunk/content</tt> from svn.
+  # <tt>private/committers/board/committee-info.yaml</tt> from svn.
 
   class Site
-    # add entries that are not currently defined in index.html (or elsewhere)
-    @@default = {
-      "brandmanagement" => {
-        link: "http://www.apache.org/foundation/marks/pmcs",
-        text: "define how Apache projects should refer to trademarks and display their brand"
-      },
-      "comdev" => {
-        link: "http://community.apache.org/",
-        text: "Resources to help people become involved with Apache projects"
-      },
-      "executiveassistant" => {
-        link: "http://www.apache.org/foundation/ASF-EA.html",
-        text: "Executive Assistant"
-      },
-      "fundraising" => {
-        link: "http://www.apache.org/foundation/contributing.html",
-        text: "Fund Raising"
-      },
-      "infrastructure" => {
-        link: "http://www.apache.org/dev/infrastructure.html",
-        text: "Infrastructure Team"
-      },
-      "legalaffairs" => {
-        link: "http://www.apache.org/legal/",
-        text: "Establishing and managing legal policies"
-      },
-      "marketingandpublicity" => {
-        link: "http://www.apache.org/press/",
-        text: "public relations and for the press-related issues"
-      },
-      "security" => {
-        link: "http://www.apache.org/security/",
-        text: "Security Team"
-      },
-      "tac" => {
-        link: "http://www.apache.org/travel/",
-        text: "Travel Assistance Committee"
-      },
-      "w3crelations" => {
-        link: "http://www.apache.org/foundation/foundation-projects.html#w3c",
-        text: "Liaison between the ASF and the World Wide Web Consortium"
-      },
-    }
     @@list = {}
+    @@mtime = 0
 
-    # a Hash of all sites.  Keys are the committee names.  Values are a hash
-    # with <tt>:link</tt>, and <tt>:text<tt> values.
+    # parse the data file
     def self.list
-      templates = ASF::SVN['site-root']
-      file = File.join(templates, 'index.html')
+      board = ASF::SVN.find('board')
+      file = File.join(board, 'committee-info.yaml')
       if not File.exist?(file)
-        Wunderbar.error "Unable to find 'infrastructure/site/trunk/content/index.html'"
+        Wunderbar.error "Unable to find 'committee-info.yaml'"
         return {}
       end
       return @@list if not @@list.empty? and File.mtime(file) == @@mtime
+      yaml = YAML.load_file file
       @@mtime = File.mtime(file)
-
-      @@list = @@default
-
-      Committee.load_committee_info
-      doc = Nokogiri::HTML.parse(File.read(file))
-      list = doc.at("#by_name")
-      if list
-        list.search('a').each do |a|
-          @@list[Committee.find(a.text).name] = 
-            {link: a['href'], text: a['title']}
-        end
-      end
-
-      list = doc.at("#by_category")
-      if list
-        list.search('a').each do |a|
-          if a['title']
-            @@list[Committee.find(a.text).name] = 
-              {link: a['href'], text: a['title']}
-          end
-        end
-      end
-
-      @@list
+      @@list = yaml[:cttees].merge yaml[:tlps]
     end
 
-    # find the site for a give committee.
+    # find the site for a given committee.
     def self.find(committee)
       committee = committee.name if ASF::Committee == committee
       list[committee]
     end
   end
 
-
   class Committee
     # website for this committee.  Data is sourced from ASF::Site.
     def site
       site = ASF::Site.find(name)
-      site[:link] if site
+      site[:site] if site
     end
 
     # description for this committee.  Data is sourced from ASF::Site.
     def description
       site = ASF::Site.find(name)
-      site[:text] if site
+      site[:description] if site
     end
   end
 end