root/livinglogic.python.xist/src/ll/scripts/ucat.py @ 4403:55ef14e89d1f

Revision 4403:55ef14e89d1f, 2.2 KB (checked in by Walter Doerwald <walter@…>, 9 years ago)

Fix -a/--all option: Match the file name not the complete patch.

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