File: indigo-update-version.py

package info (click to toggle)
indigo 1.4.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 48,936 kB
  • sloc: ansic: 332,816; cpp: 169,470; python: 20,033; java: 13,701; cs: 9,979; asm: 8,475; sql: 6,743; xml: 6,354; javascript: 1,245; sh: 555; php: 506; makefile: 54
file content (105 lines) | stat: -rw-r--r-- 4,359 bytes parent folder | download
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
95
96
97
98
99
100
101
102
103
104
105
import os
import re
import sys
import xml.etree.cElementTree as ElementTree

INDIGO_PATH = os.path.normpath(os.path.join(os.path.abspath(os.path.dirname(__file__)), os.path.pardir))


def update_pom_version(pom_file, new_version_tuple):
    version_prefix, version_suffix, commits, _ = new_version_tuple
    new_version = version_prefix
    if version_suffix:
        new_version += "-{}".format(version_suffix)
    if commits:
        dot_symbol = '.' if not version_suffix else ''
        new_version += "{}{}".format(dot_symbol, commits)

    tree = ElementTree.parse(pom_file)
    ElementTree.register_namespace('', 'http://maven.apache.org/POM/4.0.0')
    root = tree.getroot()
    version_changed = False
    for child in root:
        if child.tag.endswith('version'):
            old_version = child.text
            if old_version != new_version:
                print('Updating Indigo version from {0} to {1} in {2}...'.format(old_version, new_version, pom_file))
                child.text = new_version
                version_changed = True
            else:
                print('Indigo version in {0} remains {1}...'.format(pom_file, new_version))
            break
    if version_changed:
        tree.write(pom_file)


def update_csproj_version(csproj_file, new_version_tuple):
    version_prefix, version_suffix, commits, _ = new_version_tuple
    new_version = version_prefix
    if version_suffix:
        new_version += "-{}".format(version_suffix)
    if commits:
        new_version += ".{}".format(commits)

    tree = ElementTree.parse(csproj_file)
    root = tree.getroot()
    version_changed = False
    for child in root:
        if child.tag == 'PropertyGroup':
            for cc in child:
                if cc.tag == 'Version':
                    old_version = cc.text
                    if old_version != new_version:
                        print('Updating Indigo version from {0} to {1} in {2}...'.format(old_version, new_version,
                                                                                         csproj_file))
                        cc.text = new_version
                        version_changed = True
                    else:
                        print('Indigo version in {0} remains {1}...'.format(csproj_file, new_version))
                    break
    if version_changed:
        tree.write(csproj_file)


def update_setup_py_version(setup_py_file, new_version_tuple):
    version_prefix, version_suffix, commits, _ = new_version_tuple
    new_version = version_prefix
    if version_suffix:
        if version_suffix == 'alpha':
            version_suffix = 'a'
        elif version_suffix == 'beta':
            version_suffix = 'b'
        new_version += "{}".format(version_suffix)
    if commits:
        dot_symbol = '.' if not version_suffix else ''
        new_version += "{}{}".format(dot_symbol, commits)

    with open(setup_py_file) as f:
        data = f.read()
    vr = re.compile('version="(.+)"')
    m = vr.search(data)
    old_version = m.group(1)
    if old_version != new_version:
        data = vr.subn('version="{}"'.format(new_version), data)[0]
        print('Updating Indigo version from {0} to {1} in {2}...'.format(old_version, new_version, setup_py_file))
        with open(setup_py_file, 'w') as f:
            f.write(data)
    else:
        print('Indigo version in {0} remains {1}...'.format(setup_py_file, new_version))


def main():
    sys.path.append(os.path.join(INDIGO_PATH, 'api'))
    new_version = __import__('get_indigo_version').get_indigo_version_tuple_from_git()

    update_pom_version(os.path.join(INDIGO_PATH, 'api', 'java', 'pom.xml'), new_version)
    update_pom_version(os.path.join(INDIGO_PATH, 'api', 'plugins', 'bingo', 'java', 'pom.xml'), new_version)
    update_pom_version(os.path.join(INDIGO_PATH, 'api', 'plugins', 'bingo-elastic', 'java', 'pom.xml'), new_version)
    update_pom_version(os.path.join(INDIGO_PATH, 'api', 'plugins', 'inchi', 'java', 'pom.xml'), new_version)
    update_pom_version(os.path.join(INDIGO_PATH, 'api', 'plugins', 'renderer', 'java', 'pom.xml'), new_version)
    update_csproj_version(os.path.join(INDIGO_PATH, 'api', 'dotnet', 'Indigo.Net.csproj'), new_version)
    update_setup_py_version(os.path.join(INDIGO_PATH, 'api', 'python', 'setup.py'), new_version)


if __name__ == '__main__':
    main()