root/livinglogic.python.xist/src/ll/scripts/ucat.py @ 3784:41a00830261e

Revision 3784:41a00830261e, 1.7 KB (checked in by Walter Doerwald <walter@…>, 10 years ago)

Add ucat script.

Line 
1#!/usr/local/bin/python
2# -*- coding: utf-8 -*-
3
4
5## Copyright 2007-2009 by LivingLogic AG, Bayreuth/Germany.
6## Copyright 2007-2009 by Walter Dörwald
7##
8## All Rights Reserved
9##
10## See ll/__init__.py for the license
11
12
13from __future__ import with_statement
14
15import sys, optparse, contextlib, errno
16
17from ll import url
18
19try:
20    import astyle
21except ImportError:
22    from ll import astyle
23
24try:
25    from ll import orasql # activate the oracle scheme
26except ImportError:
27    pass
28
29
30def main(args=None):
31    def catone(urlread):
32        if urlread.isdir():
33            if options.recursive:
34                for u in urlread.listdir():
35                    catone(urlread/u)
36            else:
37                raise IOError(errno.EISDIR, "Is a directory", str(urlread))
38        else:
39            try:
40                with contextlib.closing(urlread.open("rb")) as fileread:
41                    size = 0
42                    while True:
43                        data = fileread.read(262144)
44                        if data:
45                            sys.stdout.write(data)
46                        else:
47                            break
48            except Exception:
49                if not options.ignoreerrors:
50                    raise
51
52    colors = ("yes", "no", "auto")
53    p = optparse.OptionParser(usage="usage: %prog [options] source-file-url target-file-url\n   or: %prog [options] source-file-url(s) target-dir-url")
54    p.add_option("-v", "--verbose", dest="verbose", help="Be verbose?", action="store_true", default=False)
55    p.add_option("-r", "--recursive", dest="recursive", help="Copy stuff recursively?", action="store_true", default=False)
56    p.add_option("-x", "--ignoreerrors", dest="ignoreerrors", help="Ignore errors?", action="store_true", default=False)
57   
58    (options, args) = p.parse_args(args)
59    if len(args) < 1:
60        p.error("need at least one url")
61        return 1
62
63    with url.Context():
64        for arg in args:
65            catone(url.URL(arg))
66
67
68if __name__ == "__main__":
69    sys.exit(main())
Note: See TracBrowser for help on using the browser.