|
|
|
|
|
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) |
|
|