root/livinglogic.python.xist/src/ll/scripts/ucat.py @ 4283:8a72da8e56a9

Revision 4283:8a72da8e56a9, 1.6 KB (checked in by Walter Doerwald <walter@…>, 9 years ago)

Enhance handling of flags on the command line.

Replace misc.flag() with a new action class misc.FlagAction?. This supports flag
options without a value (this toggles the option).

Display defaults for all options in scripts.

Line 
1#!/usr/local/bin/python
2# -*- coding: utf-8 -*-
3
4
5## Copyright 2007-2010 by LivingLogic AG, Bayreuth/Germany.
6## Copyright 2007-2010 by Walter Dörwald
7##
8## All Rights Reserved
9##
10## See ll/__init__.py for the license
11
12
13import sys, argparse, contextlib, errno
14
15from ll import misc, url
16
17try:
18    import astyle
19except ImportError:
20    from ll import astyle
21
22try:
23    from ll import orasql # activate the oracle scheme
24except ImportError:
25    pass
26
27
28def main(args=None):
29    def catone(urlread):
30        if urlread.isdir():
31            if args.recursive:
32                for u in urlread.listdir():
33                    catone(urlread/u)
34            else:
35                raise IOError(errno.EISDIR, "Is a directory", str(urlread))
36        else:
37            try:
38                with contextlib.closing(urlread.open("rb")) as fileread:
39                    size = 0
40                    while True:
41                        data = fileread.read(262144)
42                        if data:
43                            sys.stdout.write(data)
44                        else:
45                            break
46            except Exception:
47                if not args.ignoreerrors:
48                    raise
49
50    p = argparse.ArgumentParser(description="print URL content on the screen")
51    p.add_argument("urls", metavar="url", help="URLs to be printed", nargs="+", type=url.URL)
52    p.add_argument("-v", "--verbose", dest="verbose", help="Be verbose? (default: %(default)s)", action=misc.FlagAction, default=False)
53    p.add_argument("-r", "--recursive", dest="recursive", help="Copy stuff recursively? (default: %(default)s)", action=misc.FlagAction, default=False)
54    p.add_argument("-x", "--ignoreerrors", dest="ignoreerrors", help="Ignore errors? (default: %(default)s)", action=misc.FlagAction, default=False)
55
56    args = p.parse_args(args)
57    with url.Context():
58        for u in args.urls:
59            catone(u)
60
61
62if __name__ == "__main__":
63    sys.exit(main())
Note: See TracBrowser for help on using the browser.