]> arthur.barton.de Git - bup.git/blob - t/id-other-than
2c0370f3697afce22c61bdfeea473b09e6d2a5c6
[bup.git] / t / id-other-than
1 #!/bin/sh
2 """": # -*-python-*-
3 bup_python="$(dirname "$0")/../cmd/bup-python" || exit $?
4 exec "$bup_python" "$0" ${1+"$@"}
5 """
6 # end of bup preamble
7
8 import grp
9 import pwd
10 import sys
11
12 def usage():
13     print >> sys.stderr, "Usage: id-other-than <--user|--group> ID [ID ...]"
14
15 if len(sys.argv) < 2:
16     usage()
17     sys.exit(1)
18
19 def is_integer(x):
20     try:
21         int(x)
22         return True
23     except ValueError, e:
24         return False
25
26 excluded_ids = set(int(x) for x in sys.argv[2:] if is_integer(x))
27 excluded_names = (x for x in sys.argv[2:] if not is_integer(x))
28
29 if sys.argv[1] == '--user':
30     for x in excluded_names:
31         excluded_ids.add(pwd.getpwnam(x).pw_uid)
32     for x in pwd.getpwall():
33         if x.pw_uid not in excluded_ids:
34             print x.pw_name + ':' + str(x.pw_uid)
35             sys.exit(0)
36 elif sys.argv[1] == '--group':
37     for x in excluded_names:
38         excluded_ids.add(grp.getgrnam(x).gr_gid)
39     for x in grp.getgrall():
40         if x.gr_gid not in excluded_ids:
41             print x.gr_name + ':' + str(x.gr_gid)
42             sys.exit(0)
43 else:
44     usage()
45     sys.exit(1)