summaryrefslogtreecommitdiff
blob: 634729c9f2060c382e79087e468b42400dfc9aad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env python
# Copyright (C) 2009 Sebastian Pipping <sebastian@pipping.org>
# Licensed under GPL 2 or later

import sys
import os
if len(sys.argv) != 1 + 2:
    print "USAGE:\n  python  %s  foo/repositories.xml bar/layman-global.txt" % \
            os.path.basename(sys.argv[0])
    sys.exit(1)
repositories_xml_location = sys.argv[1]
layman_global_txt_location = sys.argv[2]


import xml.etree.ElementTree as ET
from sharedutils import * # local

a = ET.parse(open(repositories_xml_location))
repositories = a.getroot()

for repo in repositories:
    # Transform 'repo' tag
    repo.tag = 'overlay'

    # Transform 'homepage' tag
    homepage = repo.find('homepage')
    if homepage != None:
        homepage.tag = 'link'
        # Move 'link' tag first
        repo.remove(homepage)
        repo.insert(0, homepage)

    # Transform 'owner' tag
    owner = repo.find('owner')
    repo.attrib['contact'] = owner.find('email').text
    repo.remove(owner)

    # Kill 'feed' tags
    for o in repo.findall('feed'):
        repo.remove(o)

    first_source = repo.find('source')
    repo.attrib['src'] = first_source.text
    repo.attrib['type'] = first_source.attrib['type']
    repo.remove(first_source)

    # Kill unsupported attributes
    for att_name in ('quality', ):
        if att_name in repo.attrib:
            del repo.attrib[att_name]

    # Transform 'description' tags
    descriptions_kept = 0
    for description in repo.findall('description'):
        if 'lang' in description.attrib.keys():
            if description.attrib['lang'] not in ('C', 'en') or \
                    descriptions_kept > 0:
                repo.remove(description)
            else:
                del description.attrib['lang']
                descriptions_kept = descriptions_kept + 1

    # Transform 'name' tag
    name = repo.find('name')
    repo.attrib['name'] = name.text
    repo.remove(name)

    # Kill unsupported tags
    for tag_name in ('feed', 'source',  'longdescription'):
        for o in repo.findall(tag_name):
            repo.remove(o)

    # Add note on file being a generated one
    repo.insert(0, ET.Comment('THIS FILE IS GENERATED, PLEASE EDIT repositories.xml INSTEAD.'))

# Kill unsupported attributes
for att_name in ('version', ):
    if att_name in repositories.attrib:
        del repositories.attrib[att_name]

# Transform 'repositories' tag
repositories.tag = 'layman'



# recurse_print(repositories)
indent(repositories)
layman_global_txt = open(layman_global_txt_location, 'w')
layman_global_txt.write("""\
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Header$ -->
""")
a.write(layman_global_txt, encoding='utf-8')
layman_global_txt.close()