Changeset 4381:ca25d2b9ec59 in livinglogic.python.xist for src/ll/scripts/ucat.py

Show
Ignore:
Timestamp:
03/03/11 17:54:26 (9 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

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

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/ll/scripts/ucat.py

    r4283 r4381  
    1111 
    1212 
    13 import sys, argparse, contextlib, errno 
     13import sys, re, argparse, contextlib, errno 
    1414 
    1515from ll import misc, url 
     
    2828def main(args=None): 
    2929    def catone(urlread): 
     30        strurlread = str(urlread) 
    3031        if urlread.isdir(): 
    3132            if args.recursive: 
     
    3334                    catone(urlread/u) 
    3435            else: 
    35                 raise IOError(errno.EISDIR, "Is a directory", str(urlread)) 
     36                raise IOError(errno.EISDIR, "Is a directory", strurlread) 
    3637        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 
     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 
    4956 
    5057    p = argparse.ArgumentParser(description="print URL content on the screen") 
    5158    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) 
    5359    p.add_argument("-r", "--recursive", dest="recursive", help="Copy stuff recursively? (default: %(default)s)", action=misc.FlagAction, default=False) 
    5460    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) 
    5563 
    5664    args = p.parse_args(args)