Skip to content
Snippets Groups Projects
Commit 4db03958 authored by nimrod's avatar nimrod
Browse files

First try.

Let's say a naive implementation. Mainly to mimic the json.tool format
generally (most of the switches are not applicable and I'm not going to
mimic it completely).
parent 821e7acb
No related branches found
No related tags found
No related merge requests found
...@@ -8,5 +8,5 @@ include: ...@@ -8,5 +8,5 @@ include:
install-wheel: install-wheel:
extends: .install-wheel extends: .install-wheel
script: script:
- python3 -m yamltool - python3 -m yamltool -h
- yt - yt -h
...@@ -7,6 +7,26 @@ This tool provides a simple command line interface to validate and pretty-print ...@@ -7,6 +7,26 @@ This tool provides a simple command line interface to validate and pretty-print
YAML documents while trying to preserve as much as possible from the original YAML documents while trying to preserve as much as possible from the original
documents (like comments and anchors). documents (like comments and anchors).
Usage
-----
.. code:: shell
usage: yt [-h] [infile] [outfile]
YAML tool, a clone of the json.tool Python module for YAML.
This tool provides a simple command line interface to validate and pretty-print
YAML documents while trying to preserve as much as possible from the original
documents (like comments and anchors).
positional arguments:
infile a YAML file to be validated or pretty-printed
outfile write the output of infile to outfile
optional arguments:
-h, --help show this help message and exit
License License
------- -------
......
...@@ -6,10 +6,50 @@ documents (like comments and anchors). ...@@ -6,10 +6,50 @@ documents (like comments and anchors).
""" """
import argparse
import pathlib
import sys
import ruamel.yaml # pylint: disable=import-error
def main(): def main():
"""Main entrypoint.""" """Main entrypoint."""
return parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter,
)
parser.add_argument(
"infile",
nargs="?",
type=argparse.FileType(encoding="utf-8"),
help="a YAML file to be validated or pretty-printed",
default=sys.stdin,
)
parser.add_argument(
"outfile",
nargs="?",
type=pathlib.Path,
help="write the output of infile to outfile",
default=None,
)
options = parser.parse_args()
with options.infile as infile:
try:
yaml = ruamel.yaml.YAML(typ="rt")
yaml.explicit_start = True
yaml.indent(mapping=2, sequence=4, offset=2)
yaml.preserve_quotes = True
if options.outfile is None:
out = sys.stdout
else:
out = options.outfile.open("w", encoding="utf-8")
yaml.dump_all(yaml.load_all(infile), out)
except Exception as ex:
raise SystemExit(ex) # pylint: disable=raise-missing-from
if __name__ == "__main__": if __name__ == "__main__":
try:
main() main()
except BrokenPipeError as exc:
sys.exit(exc.errno)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment