7 ms·
This is cool. What is sad is that it has to rely on a library of completion specs. It shows what kind of stone age foundations we are building on top of. The w
by Too 3y ago
This is cool.
What is sad is that it has to rely on a library of completion specs. It shows what kind of stone age foundations we are building on top of. The world would have been a much better place if CLIs themselves defined strict interfaces using standard data structures. Not only for auto completion, also gives much more accurate error checking of bash scripts. Same goes for data piped in and out of command.
- runeks 3y ago> The world would have been a much better place if CLIs themselves defined strict interfaces using standard data structures. Well it's not too late just yet. How about if all CLI exes had an option, say --dump-cli-options, that wrote out a spec of the supported commands/flags/options? Something like e.g. Python's argparse should be able to effortlessly spit out this info (and the same for other similar argument parsing libraries).
- runeks 3y agoAnd we would also need an options that does CLI argument parsing only, and either returns an error related to parsing one or more options or "ok". This could be used to do "form validation" of CLI args as they're typed in the shell.
- hahn-kev 3y agoLots do it's called help. But then they would all have to use the same spec, which we know would never happen.
- erezsh 3y agoIt's sad. If the world of software had better coordination and cooperation, we would be able to get so much more done. Instead we're constantly dumping and re-parsing the same data, re-implementing the same protocols and algorithms in dozens of different languages, each time with different quirks. Fixing the same bugs again and again.
- Eisenstein 3y agoAll we need is something that will tell us who is right and then impose that vision on everyone.
- pests 3y agoLike PowerShell?
- delta_p_delta_x 3y agoTo do this, you'd have to have some sort of common runtime, and nearly all command-line utilities would have to be compiled with said runtime, so that the parameters, names, and types of parameters for said utilities could be returned, parsed, and verified as a data structure, without having to manually parse the output of some `command --help` invocation. It would thoroughly dispense with the whole argument parsing routine in the first place, which could now be done in a standardised manner; arguments could be defined as strict types with possible values limited to a set, and best of all, they wouldn't just be a dictionary/hash-map of strings to strings—the arguments could actually be named variables with values, in the context of the called utility. It would certainly be quite a powerful shell, and I'm sure something similar has already been done. I just can't think of an example..... A Powerful shell, running on some Common Language Runtime; I wonder what it could be.