[sysadmin-bin] Use Python 3 for easy UTF-8 support



commit bc82f808791e114f3983f486f315263d01879a4c
Author: Bartłomiej Piotrowski <bpiotrowski gnome org>
Date:   Tue Jul 21 14:13:26 2020 +0200

    Use Python 3 for easy UTF-8 support

 git/extract-doap-info | 70 ++++++++++++++++++++++-----------------------------
 1 file changed, 30 insertions(+), 40 deletions(-)
---
diff --git a/git/extract-doap-info b/git/extract-doap-info
index e405a65..56164e6 100755
--- a/git/extract-doap-info
+++ b/git/extract-doap-info
@@ -1,8 +1,8 @@
-#!/usr/bin/python
+#!/usr/bin/python3.6
 
-from cStringIO import StringIO
 import os
 import sys
+import xml.etree.ElementTree as et
 
 script_path = os.path.realpath(os.path.abspath(sys.argv[0]))
 script_dir = os.path.dirname(script_path)
@@ -12,51 +12,41 @@ if len(sys.argv) < 2:
     sys.exit(1)
 git_dir = sys.argv[1]
 
-import semi_rdf
-
 DOAP = "http://usefulinc.com/ns/doap#";
 GNOME = "http://api.gnome.org/doap-extensions#";
+RDF = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
 
 groups = {
-    (GNOME + 'core'): 'core',
-    (GNOME + 'core-apps'): 'core-apps',
-    (GNOME + 'apps'): 'apps',
-    (GNOME + 'admin'): 'admin',
-    (GNOME + 'bindings'): 'bindings',
-    (GNOME + 'deprecated'): 'deprecated',
-    (GNOME + 'desktop'): 'desktop',
-    (GNOME + 'development'): 'development',
-    (GNOME + 'infrastructure'): 'infrastructure',
-    (GNOME + 'platform'): 'platform',
-    (GNOME + 'productivity'): 'productivity'
-    }
+    (GNOME + "core"): "core",
+    (GNOME + "core-apps"): "core-apps",
+    (GNOME + "apps"): "apps",
+    (GNOME + "admin"): "admin",
+    (GNOME + "bindings"): "bindings",
+    (GNOME + "deprecated"): "deprecated",
+    (GNOME + "desktop"): "desktop",
+    (GNOME + "development"): "development",
+    (GNOME + "infrastructure"): "infrastructure",
+    (GNOME + "platform"): "platform",
+    (GNOME + "productivity"): "productivity",
+}
 
 rdf = sys.stdin.read()
+prj = et.fromstring(rdf)
 
 # We save the entire DOAP file into GIT_DIR for later use
-fd = open(os.path.join(git_dir, "gnome_doap"), 'w')
-fd.write(rdf)
-fd.close()
+with open(os.path.join(git_dir, "gnome_doap"), "w") as f:
+    f.write(rdf)
 
 # And then pre-parse out a couple of particular properties
-nodes = semi_rdf.read_rdf(StringIO(rdf))
-for node in nodes:
-    if node.name != (DOAP, "Project"):
-        continue
-
-    shortdesc = node.find_property((DOAP, "shortdesc"))
-    fd = open(os.path.join(git_dir, 'description'), 'w')
-    print >> fd, shortdesc
-    fd.close()
-
-    group = node.find_property((DOAP, "category"))
-    group = groups.get(group, 'other')
-    fd = open(os.path.join(git_dir, 'gnome_group'), 'w')
-    print >> fd, group
-    fd.close()
-
-    fd = open(os.path.join(git_dir, 'programming-languages'), 'w')
-    fd.write("\n".join(node.find_properties((DOAP, 'programming-language'))))
-    fd.close()
-
-    break
+category_attr = prj.find(f"{{{DOAP}}}category").attrib
+category = category_attr.get(f"{{{RDF}}}resource").split("#")[1]
+with open(os.path.join(git_dir, "gnome_group"), "w") as f:
+    f.write(f"{category}\n")
+
+shortdesc = prj.find(f"{{{DOAP}}}shortdesc").text
+with open(os.path.join(git_dir, "description"), "w") as f:
+    f.write(f"{shortdesc}\n")
+
+proglang = prj.find(f"{{{DOAP}}}programming-language").text
+with open(os.path.join(git_dir, "programming-language"), "w") as f:
+    f.write(f"{proglang}\n")


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]