shyaml
shyaml copied to clipboard
Improvement: better command line API
The current command line API has lots of thing left to be desired.
- Name are not easy to remember
- does it start with
get-(get-valuesandvalues) ? - does it take a "s" (
get-valueandget-values) ?
- does it start with
- Which ACTION can I use on which type ?
- The final
-0seems like a bad smell, why not a separate option ?-0
Some others concerns raised:
- Would be nice to have more choice that stdin as input and stdout as output. #11
- order of
KEYandACTIONcould be inverted, as we first browse, then think to what we'd like to do with the target.get-valueACTION could then be the default action and be removed.- and a separate optional
[--get-keys | --get-values | --get-key-values | --get-type]could be enough for all remaining ACTIONs.
Some deeper reflection on these subject might help to get further:
.(dot) is theget-valueaction in some ways. Why not put all in the KEY and remove the need of ACTION. KEY would be a way to map a YAML entry into alist of YAML(possibly a list of 1 element).- This would require special chars to map to meanings as current
keys,values. - how to differentiate between a list in one YAML entry and a list of YAML separated entries ?
- This would require special chars to map to meanings as current
I'm inclined to go towards these changements::
shyaml KEY [--get-keys | --get-values | --get-key-values | --get-type] [-0] [--default DEFAULT]
With these rules:
- all the
--get-*are mutually exclusive and optional (choose one of them or none of them), and- they work on the YAML value currently targetted by KEY
- if they finish with a
s, then they'll output a list of values that requires a separator, by default this separator is\n, but can be changed to\0thanks to-0option. - if it mentions
keythen it works only on struct.--get-valueson struct only return list of values.
Optionally we could also have:
[--input FILE | -i FILE]and[--output FILE | -o FILE]to read/write from files, supporting-as being stdin/stdout, and defaulted to those if not specified. #11
Any comments ?