root/livinglogic.python.xist/src/ll/scripts/ucat.py @ 4381:ca25d2b9ec59

Revision 4381:ca25d2b9ec59, 2.0 KB (checked in by Walter Doerwald <walter@…>, 9 years ago)

Add options --include and --exclude to ucp and ucp. Remove --verbose from ucat.

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, re, 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        strurlread = str(urlread)
31        if urlread.isdir():
32            if args.recursive:
33                for u in urlread.listdir():
34                    catone(urlread/u)
35            else:
36                raise IOError(errno.EISDIR, "Is a directory", strurlread)
37        else:
38            do = True
39            if args.include is not None and args.include.search(strurlread) is None:
40                do = False
41            if args.exclude is not None and args.exclude.search(strurlread) is not None:
42                do = False
43            if do:
44                try:
45                    with contextlib.closing(urlread.open("rb")) as fileread:
46                        size = 0
47                        while True:
48                            data = fileread.read(262144)
49                            if data:
50                                sys.stdout.write(data)
51                            else:
52                                break
53                except Exception:
54                    if not args.ignoreerrors:
55                        raise
56
57    p = argparse.ArgumentParser(description="print URL content on the screen")
58    p.add_argument("urls", metavar="url", help="URLs to be printed", nargs="+", type=url.URL)
59    p.add_argument("-r", "--recursive", dest="recursive", help="Copy stuff recursively? (default: %(default)s)", action=misc.FlagAction, default=False)
60    p.add_argument("-x", "--ignoreerrors", dest="ignoreerrors", help="Ignore errors? (default: %(default)s)", action=misc.FlagAction, default=False)
61    p.add_argument("-i", "--include", dest="include", metavar="PATTERN", help="Include only URLs matching PATTERN (default: %(default)s)", type=re.compile)
62    p.add_argument("-e", "--exclude", dest="exclude", metavar="PATTERN", help="Exclude URLs matching PATTERN (default: %(default)s)", type=re.compile)
63
64    args = p.parse_args(args)
65    with url.Context():
66        for u in args.urls:
67            catone(u)
68
69
70if __name__ == "__main__":
71    sys.exit(main())
Note: See TracBrowser for help on using the browser.