writer.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import sys
  2. import argparse
  3. import process_command_files as pcf
  4. def parse_args():
  5. args = pcf.get_args(sys.argv[1:])
  6. parser = argparse.ArgumentParser()
  7. parser.add_argument('-f', '--file', dest='file_path')
  8. parser.add_argument('-a', '--append', action='store_true', default=False)
  9. parser.add_argument('-Q', '--quote', action='store_true', default=False)
  10. parser.add_argument('-s', '--addspace', action='store_true', default=False)
  11. parser.add_argument('-c', '--content', action='append', dest='content')
  12. parser.add_argument('-m', '--content-multiple', nargs='*', dest='content')
  13. parser.add_argument('-P', '--path-list', action='store_true', default=False)
  14. return parser.parse_args(args)
  15. def smart_shell_quote(v):
  16. if v is None:
  17. return None
  18. if ' ' in v or '"' in v or "'" in v:
  19. return "\"{0}\"".format(v.replace('"', '\\"'))
  20. return v
  21. if __name__ == '__main__':
  22. args = parse_args()
  23. open_type = 'a' if args.append else 'w'
  24. content = args.content
  25. if args.quote:
  26. content = [smart_shell_quote(ln) for ln in content] if content is not None else None
  27. content = '\n'.join(content)
  28. with open(args.file_path, open_type) as f:
  29. if args.addspace:
  30. f.write(' ')
  31. if content is not None:
  32. f.write(content)