1 from xml
.dom
import minidom
2 from zeroinstall
.injector
import namespaces
, model
5 date_format
= '\d{4}-\d{2}-\d{2}'
7 def make_release(data
):
8 """Normally there's only one implementation, but we can cope with several."""
9 doc
= minidom
.parseString(data
)
11 all_impls
= doc
.documentElement
.getElementsByTagNameNS(namespaces
.XMLNS_IFACE
, 'implementation')
13 released
= x
.getAttribute('released')
14 if released
is None or not re
.match(date_format
, released
):
15 unreleased
.append((None, x
))
17 if len(all_impls
) == 0:
18 raise Exception('No implementations in interface file!')
19 if len(all_impls
) > 1:
20 raise Exception("Multiple implementations, but all are released. Aborting.")
22 unreleased
.append((impl
.getAttribute('released'), impl
))
24 for released
, x
in unreleased
:
25 id = x
.getAttribute('id')
26 version
= x
.getAttribute('version')
27 stability
= x
.getAttribute('stability')
28 print "Implementation '%s' (version: %s released: %s stability: %s)" % \
29 (id, version
, x
.getAttribute('released'), stability
)
30 new_version
= raw_input('Version [%s]: ' % version
)
34 released
= time
.strftime('%Y-%m-%d')
36 new_released
= raw_input('Released [%s]: ' % released
)
39 if re
.match(date_format
, new_released
):
40 released
= new_released
42 print "Invalid date format. Use YYYY-MM-DD."
45 new_stability
= raw_input('Stability [testing]: ').lower()
47 new_stability
= model
.testing
.name
48 for level
in model
.stability_levels
:
49 if level
.startswith(new_stability
):
53 print "Invalid level '%s'" % new_stability
54 print "Choose one of", ', '.join(model
.stability_levels
.keys())
58 x
.setAttribute('version', version
)
59 x
.setAttribute('released', released
)
60 x
.setAttribute('stability', stability
)