summaryrefslogtreecommitdiffstats
path: root/src/gns-deb-diff.py
blob: 0453930e4274c83904cb7ea28715ec6d58c107c0 (plain) (blame)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Copyright 2013 rsiddharth <rsiddharth@ninthfloor.org>
#
# This work is free. You can redistribute it and/or modify it under
# the terms of the Do What The Fuck You Want To Public License,
# Version 2, as published by Sam Hocevar. See the COPYING file or
# <http://www.wtfpl.net/> for more details.

import subprocess as child
import shlex

# global variables.
bzr_base_url = ""
local_dir = ""
pkgs_file = ""

def get_packages():
    """
    Return a list of package names from pkgs_file.
    """
    global pkgs_file

    try:
        packages_file = open(pkgs_file, 'r')
    except IOError, e:
        print "Trouble opening %r" % pkgs_file
        print e
        return None

    packages = []
    for package in packages_file.readlines():
        packages.append(package.strip())

    packages_file.close()

    print packages

    return packages


def bzr_branch_command(package):
    """
    Return the command to create a local bzr branch of package.
    """
    global bzr_base_url, local_dir

    return "bzr branch %s/%s %s/%s" % (bzr_base_url, package,
                                       local_dir, package)

def fetch_bzr_branch(package):
    """
    Create a local bzr branch of the package.
    """
    bzr_branch_cmd = bzr_branch_command(package)
    print "doing %s ..." % bzr_branch_cmd
    return child.call(shlex.split(bzr_branch_cmd))


def deploy_packages_locally(packages_list):
    """
    Create a local bzr branch for each package in packages list.
    """
    for pkg in packages_list:
        fetch_bzr_branch(pkg)

def get_paraphernalia():
    """
    Read relevant values from stdin to start work.
    """
    global bzr_base_url, local_dir, pkgs_file

    stdin = raw_input(">> remote bzr url: ").strip()

    if (len(stdin) != 0):
        bzr_base_url = stdin
    else:
        bzr_base_url = "bzr://bzr.savannah.gnu.org/gnewsense/packages-parkes"

    # directory under which the bzr branches has to be stored.
    local_dir =  raw_input(">> local directory to store bzr branch: ").strip()

    # absolute path to file which contains the packages names.
    # one package per line.
    stdin = raw_input(">> packages list file (absolute path): ").strip()

    if (len(stdin) != 0):
        pkgs_file = stdin
    else:
        pkgs_file = "packages-parkes.list"

    packages_list = get_packages()

    return packages_list


def read_gns_readme(package):
    """
    Reads & returns the README.gNewSense file for the package.

    If the README.gNewSense is not present, it returns None.
    """

    global local_dir

    try:
        readme_file = open("%s/%s/debian/README.gNewSense" % (local_dir,
                                                              package),
                           'r')
    except IOError, e:
        print "Trouble opening %s/%s"  % (local_dir, package)
        print e
        return None # give up!

    readme_content = readme_file.read().strip()
    readme_file.close()

    return readme_content


def slurp_readmes(package_list):
    """Reads the README.gNewSense for each package in package_list.

    The readme content of all packages is put into a dict.
    """

    pkg_readmes = {}
    noreadme_pkgs = []

    for pkg in package_list:
        readme_content = read_gns_readme(pkg)

        if readme_content is not None:
            pkg_readmes[pkg] = readme_content
        else:
            noreadme_pkgs.append(pkg)

    return pkg_readmes, noreadme_pkgs

pkgs_list = get_paraphernalia()
deploy_packages_locally(pkgs_list)
pkg_readmes, noreadme_pkgs = slurp_readmes(pkgs_list)