]> arthur.barton.de Git - bup.git/blob - t/id-other-than
eb6aead51281c1f52302fe1931d3a3f8a3514877
[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 from __future__ import absolute_import
9
10 import grp
11 import pwd
12 import sys
13
14 def usage():
15     print >> sys.stderr, "Usage: id-other-than <--user|--group> ID [ID ...]"
16
17 if len(sys.argv) < 2:
18     usage()
19     sys.exit(1)
20
21 def is_integer(x):
22     try:
23         int(x)
24         return True
25     except ValueError, e:
26         return False
27
28 excluded_ids = set(int(x) for x in sys.argv[2:] if is_integer(x))
29 excluded_names = (x for x in sys.argv[2:] if not is_integer(x))
30
31 if sys.argv[1] == '--user':
32     for x in excluded_names:
33         excluded_ids.add(pwd.getpwnam(x).pw_uid)
34     for x in pwd.getpwall():
35         if x.pw_uid not in excluded_ids:
36             print x.pw_name + ':' + str(x.pw_uid)
37             sys.exit(0)
38 elif sys.argv[1] == '--group':
39     for x in excluded_names:
40         excluded_ids.add(grp.getgrnam(x).gr_gid)
41     for x in grp.getgrall():
42         if x.gr_gid not in excluded_ids:
43             print x.gr_name + ':' + str(x.gr_gid)
44             sys.exit(0)
45 else:
46     usage()
47     sys.exit(1)