aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/qa/ipkg-diff/ipkg-diff
blob: 47df98ea9283e34eb2429c9a350e3fe1ff9fd642 (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
#!/usr/bin/env python
# License of this file:
#  Copy, Modify, Change, Sell it at your will.
#
# There is absolutely no warranty with this file
#
# (C) Copyright 2006 Holger Hans Peter Freyther



def check_dir(name, error):
    """
    Check if the given directory exists, if not error
    is printed and the application is left.
    """
    import os, sys
    import stat
    if not os.path.isdir(name):
        print error
        sys.exit(-1)


def find_packages(dir):
    import os
    contents = os.listdir(dir)
    ipks = []
    for f in contents:
        (root,ext) = os.path.splitext(f)
        if ext == ".ipk":
            ipks.append( f )
    return ipks

def diff_dirs( old_ipks, new_ipks ):
    """
    We will return three lists. The first one will
    contain the files that are only in a, the second
    the files in both directories and the third one
    will
    """
    only_old = [ i for i in old_ipks if i not in new_ipks]
    both     = [ i for i in old_ipks if i in new_ipks ]
    only_new = [ i for i in new_ipks if i not in old_ipks]

    return only_old, both, only_new

def print_result_start( old, both, new ):
    """
    Print the findings of ipkg-diff
    """
    print "ipkg-diff diff report"
    print "%d packages found" % (len(old)+len(both)+len(new))
    print "# of old/removed packages: %d" % len(old)
    print "# of new packages: %d" % len(new)
    print "# of possible changed packages: %d" % len(both)
    print ""

    if len(old) > 0:
        for i in old:
            print "Vanished ipk: %s" % i

    if len(new) > 0:
        for i in new:
            print "New ipk: %s" % i

if __name__ == "__main__":
    import os,sys
    if len(sys.argv) != 3:
        print "ipkg-diff OLD NEW"
        sys.exit(-2)

    check_dir(sys.argv[1], "Source Directory does not exist")
    check_dir(sys.argv[2], "Dest Directory does not exists")

    old_ipks = find_packages(sys.argv[1])
    new_ipks = find_packages(sys.argv[2])

    only_old, both, only_new = diff_dirs( old_ipks, new_ipks )

    print_result_start( only_old, both, only_new )