1 from config_common.rhn_log import log_debug, die
2 from config_common.file_utils import ostr_to_sym
3 import handler_base, base64
4 import sys
5 from rhn.i18n import bstr
6
7
8 -class Handler(handler_base.HandlerBase):
10 log_debug(2)
11 r = self.repository
12 files = r.list_files()
13
14 if not files:
15 die(1, "No managed files.")
16
17 label = "Config Channel"
18 maxlen = max([len(s[0]) for s in files])
19 maxlen = max(maxlen, len(label)) + 2
20 print("%-10s %8s %-8s %10s %+3s %*s %s" % ('Mode', 'Owner', 'Group', 'Size', 'Rev', maxlen, label, "File"))
21
22 arg_files = []
23 if len(sys.argv) > 2:
24 arg_files = sys.argv[2:len(sys.argv)]
25
26 for file in files:
27
28 if len(arg_files) and not file[1] in arg_files:
29 continue
30
31
32 finfo = r.get_file_info(file[1])[1]
33
34 if finfo['encoding'] == 'base64':
35 fsize = len(base64.decodestring(bstr(finfo['file_contents'])))
36 else:
37
38 fsize = '*' + str(len(finfo['file_contents']))
39
40 if finfo['filetype'] == 'symlink':
41 permstr = ostr_to_sym('777', finfo['filetype'])
42 dest = "%s -> %s" % (file[1], finfo['symlink'])
43 fsize = str(len(finfo['symlink']))
44 finfo['username'] = 'root'
45 finfo['groupname'] = 'root'
46 else:
47 permstr = ostr_to_sym(finfo['filemode'], finfo['filetype']) or ''
48 dest = file[1]
49 print("%10s %8s %-8s %10s %+3s %*s %s" % (permstr, finfo['username'], finfo['groupname'], fsize, finfo['revision'], maxlen, file[0], dest))
50