root/livinglogic.python.xist/src/ll/scripts/ucat.py @ 4382:7ffba82ac396

Revision 4382:7ffba82ac396, 2.1 KB (checked in by Walter Doerwald <walter@…>, 9 years ago)

Move mathing against the -e/-e patterns into separate function.

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