diff env/lib/python3.7/site-packages/pyaml/__main__.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.7/site-packages/pyaml/__main__.py	Sat May 02 07:14:21 2020 -0400
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+
+import os, sys, stat, tempfile, contextlib, yaml, pyaml
+
+
+@contextlib.contextmanager
+def safe_replacement(path, *open_args, **open_kws):
+	path = str(path)
+	try: mode = stat.S_IMODE(os.stat(path).st_mode)
+	except (OSError, IOError): mode = None
+	open_kws.update( delete=False,
+		dir=os.path.dirname(path), prefix=os.path.basename(path)+'.' )
+	with tempfile.NamedTemporaryFile(*open_args, **open_kws) as tmp:
+		try:
+			if mode is not None: os.fchmod(tmp.fileno(), mode)
+			yield tmp
+			if not tmp.closed: tmp.flush()
+			os.rename(tmp.name, path)
+		finally:
+			try: os.unlink(tmp.name)
+			except (OSError, IOError): pass
+
+
+def main(argv=None):
+	import argparse
+	parser = argparse.ArgumentParser(
+		description='Process and dump prettified YAML to stdout.')
+	parser.add_argument('path', nargs='?', metavar='path',
+		help='Path to YAML to read (default: use stdin).')
+	parser.add_argument('-r', '--replace', action='store_true',
+		help='Replace specified path with prettified version in-place.')
+	parser.add_argument('-w', '--width', type=int, metavar='chars',
+		help='Max line width hint to pass to pyyaml for the dump.'
+			' Only used to format scalars and collections (e.g. lists).')
+	opts = parser.parse_args(argv or sys.argv[1:])
+
+	src = open(opts.path) if opts.path else sys.stdin
+	try: data = yaml.safe_load(src)
+	finally: src.close()
+
+	pyaml_kwargs = dict()
+	if opts.width: pyaml_kwargs['width'] = opts.width
+	if opts.replace and opts.path:
+		with safe_replacement(opts.path) as tmp:
+			pyaml.pprint(data, file=tmp, **pyaml_kwargs)
+	else: pyaml.pprint(data, **pyaml_kwargs)
+
+if __name__ == '__main__': sys.exit(main())