aboutsummaryrefslogtreecommitdiffstats
path: root/build/scripts/writer.py
blob: 21bb3006e58b3f56017238b13c20854bc6e6dcca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import sys
import argparse

import process_command_files as pcf


def parse_args():
    args = pcf.get_args(sys.argv[1:])
    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--file', dest='file_path')
    parser.add_argument('-a', '--append', action='store_true', default=False)
    parser.add_argument('-Q', '--quote', action='store_true', default=False)
    parser.add_argument('-s', '--addspace', action='store_true', default=False)
    parser.add_argument('-c', '--content', action='append', dest='content')
    parser.add_argument('-m', '--content-multiple', nargs='*', dest='content')
    parser.add_argument('-P', '--path-list', action='store_true', default=False)
    return parser.parse_args(args)


def smart_shell_quote(v):
    if v is None:
        return None
    if ' ' in v or '"' in v or "'" in v:
        return "\"{0}\"".format(v.replace('"', '\\"'))
    return v

if __name__ == '__main__':
    args = parse_args()
    open_type = 'a' if args.append else 'w'

    content = args.content
    if args.quote:
        content = [smart_shell_quote(ln) for ln in content] if content is not None else None
    content = '\n'.join(content)

    with open(args.file_path, open_type) as f:
        if args.addspace:
            f.write(' ')
        if content is not None:
            f.write(content)