projects/aports·blob v2.7 · refs

80 lines · 1.6 KiB

1#!/usr/bin/env lua
2
3-- script to compare the packages versions in 2 iso images
4-- usage: compare-apks
5
6maxlen = 0
7
8function read_package_list(file)
9 local a = {}
10 local h
11-- h = io.popen("tar -O -zxf ".. file.." -- apks/INDEX.md5.gz | gunzip -c | awk '{ print $2}'")
12
13 h = io.popen("isoinfo -R -f -i "..file.." | grep '.apk$' | sed 's:.*/::'")
14 for line in h:lines() do
15 p, v = string.match(line, "^(.+)-(%d.*).apk")
16 a[p] = v
17 if maxlen < #p + #v + 2 then
18 maxlen = #p + #v + 2
19 end
20 end
21 h:close()
22 return a
23end
24
25-- print all packages that exist in a1 but not in a2
26function missing_packages(a1, a2)
27 local ret = {}
28 local p,v
29 for p,v in pairs(a1) do
30 if a2[p] == nil then
31 table.insert(ret, p.."-"..v)
32 end
33 end
34 table.sort(ret)
35 return ret
36end
37
38function unexpand_tabs(s, tab)
39 tab = tab or 8
40 local pat = string.rep(".", tab)
41 s = string.gsub(s, pat, "%0\1")
42 s = string.gsub(s, " +\1", "\t")
43 s = string.gsub(s, "\1", "")
44 return s
45end
46
47function upgraded_packages(a1, a2)
48 local p,v, tmp
49 local a = {}
50 for p,v in pairs(a2) do
51 if a1[p] and a1[p] ~= v then
52 tmp = unexpand_tabs(string.format("%-"..tostring(maxlen).."s(%s)",
53 p.."-"..v, a1[p]))
54 table.insert(a, tmp)
55 end
56 end
57 table.sort(a)
58 return a
59end
60
61apks1 = read_package_list(arg[1])
62apks2 = read_package_list(arg[2])
63
64print("Removed packages:")
65for dummy,line in ipairs(missing_packages(apks1, apks2)) do
66 print(line)
67end
68print("\n")
69
70print("New packages:")
71for dummy,line in ipairs(missing_packages(apks2, apks1)) do
72 print(line)
73end
74print("\n")
75
76print("Upgraded/downgraded packages (from version):")
77for dummy,line in ipairs(upgraded_packages(apks1, apks2)) do
78 print(line)
79end
80