| | |
| |
|
| | import argparse |
| | import functools |
| | import subprocess |
| |
|
| |
|
| | def read_file(fname): |
| | with open(fname, encoding='utf-8') as f: |
| | return f.read() |
| |
|
| |
|
| | def write_file(fname, content, mode='w'): |
| | with open(fname, mode, encoding='utf-8') as f: |
| | return f.write(content) |
| |
|
| |
|
| | def get_filename_args(has_infile=False, default_outfile=None): |
| | parser = argparse.ArgumentParser() |
| | if has_infile: |
| | parser.add_argument('infile', help='Input file') |
| | kwargs = {'nargs': '?', 'default': default_outfile} if default_outfile else {} |
| | parser.add_argument('outfile', **kwargs, help='Output file') |
| |
|
| | opts = parser.parse_args() |
| | if has_infile: |
| | return opts.infile, opts.outfile |
| | return opts.outfile |
| |
|
| |
|
| | def compose_functions(*functions): |
| | return lambda x: functools.reduce(lambda y, f: f(y), functions, x) |
| |
|
| |
|
| | def run_process(*args, **kwargs): |
| | kwargs.setdefault('text', True) |
| | kwargs.setdefault('check', True) |
| | kwargs.setdefault('capture_output', True) |
| | if kwargs['text']: |
| | kwargs.setdefault('encoding', 'utf-8') |
| | kwargs.setdefault('errors', 'replace') |
| | return subprocess.run(args, **kwargs) |
| |
|