]> git.pld-linux.org Git - packages/rpm-build-tools.git/blob - check-unused-files.py
Update commit message style to Git not CVS
[packages/rpm-build-tools.git] / check-unused-files.py
1 #!/usr/bin/python
2
3 import subprocess
4 import sys
5 import os
6 import fnmatch
7
8 if len(sys.argv) == 2:
9     spec = sys.argv[1]
10 else:
11     # try autodetecting
12     spec = "%s.spec" % os.path.basename(os.getcwd())
13
14 if not os.path.isfile(spec):
15     print >> sys.stderr, "%s: %s doesn't exist!" % (sys.argv[0], spec)
16     sys.exit(1)
17
18 dir = os.path.dirname(spec)
19 if dir == '':
20     dir = '.'
21
22 p = subprocess.Popen(['rpm-specdump', spec], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
23 (out, err) = p.communicate(None)
24 p.wait()
25 if err:
26     print >> sys.stderr, "%s: %s" % (sys.argv[0], err)
27     sys.exit(1)
28
29 files = []
30
31 for l in out.split('\n'):
32     data = l.split()
33     if len(data) != 3 or data[0] != 's':
34         continue
35     file = os.path.basename(data[2])
36     files.append(file)
37
38 obsolete = []
39
40 # files to exclude
41 exclude = ['log.*', '.#*', '*~', '*.orig', '*.sw?', '.bigfiles', 'sources']
42
43 # read .gitignore, distfiles files are filled there
44 if os.path.isfile('%s/.gitignore' % dir):
45     f = open('%s/.gitignore' % dir , 'r')
46     for l in f.readlines():
47         exclude.append(l.rstrip())
48
49 def git_entries(file):
50     p = subprocess.Popen(['git', 'ls-files'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
51     (out, err) = p.communicate(None)
52     p.wait()
53     if err:
54         print >> sys.stderr, "%s: %s" % (sys.argv[0], err)
55         sys.exit(1)
56     return out.split('\n')
57 gitfiles = git_entries(dir)
58
59 def blacklisted(file):
60     if file == os.path.basename(spec):
61         return True
62
63     if file in [ '.', '..', '.git', 'CVS', 'TODO']:
64         return True
65
66     if os.path.isdir(file):
67         return True
68
69     for pat in exclude:
70         if fnmatch.fnmatch(file, pat):
71             return True
72
73     return False
74
75 for file in os.listdir(dir):
76     file = os.path.basename(file)
77     if blacklisted(file):
78         continue
79
80     if not file in gitfiles:
81         print "Not in repo: %s" % file
82         continue
83
84     if file not in files:
85         print "Obsolete file: %s" % file
86         obsolete.append(file)
87
88 if obsolete:
89     print
90     print "git rm %s" % " ".join(obsolete)
91     print "git commit -m '- drop obsolete files' %s" % " ".join(obsolete)
This page took 0.031211 seconds and 3 git commands to generate.