5 ms·
Ok, now, what languages beside Python and Go provide Command line argument parsing? And Go doesn't do that in a `professional` way. You either write your own, w
by megumax 5y ago
Ok, now, what languages beside Python and Go provide Command line argument parsing? And Go doesn't do that in a `professional` way. You either write your own, which can easily turn into a clusterfuck or use a third party library. Even in Go, people use cobra[1]. Also embedding a lot of functionality in a standard library isn't great as well, because if some vulnerability is found, it's really hard to patch it, because you need to push versions and (for example on Linux) some distro maintainers won't push it for `stability` etc. A standard library should provide basic functionality (in most general areas), but not very advanced one.
[1] https://github.com/spf13/cobra https://github.com/spf13/cobra
- morelisp 5y ago> what languages beside Python and Go provide Command line argument parsing? Even POSIX gives you getopt(1) and getopt(3). What other language doesn't? I can only think of Java.
- megumax 5y agoPOSIX is not ISO C or C++ standard. On Windows, what are you gonna do? Also, other languages are Rust, Kotlin, Swift (to name a few `modern` ones). Yes, Kotlin and Swift have `first class` CLI parsing libraries, but they are not part of standard library.
- morelisp 5y ago"First-party" is distinct from "first class". The difference between a first-party library and the standard library ranges from "slightly weaker compatibility guarantees" to "it's supported in all environments where it makes sense, but the language can run unhosted so that's not everywhere" to "no difference at all, we just didn't want to package it with the compiler". You're also missing the forest for the "well actually" trees: Lots of languages have argument parsing in their stdlib.
- afavour 5y agoSure, and Node gives you the process.argv array. The point is having higher level APIs than that.
- MrStonedOne 5y agophp
- Groxx 5y agoas if there even was one command-line or config standard. especially across different operating systems. it absolutely does not belong in stdlibs, where it can never be changed. that's how you end up with too many terrible CLI tools using Go's `flags` package.
- chakkepolja 5y agoI don't understand, what's wrong with Go's flag, compared to, say, python's argparse?
- kitsunesoba 5y agoIt's not part of the standard library, but Swift has the first-party ArgumentParser[0]. Other languages could use a similar model (though what "first party" means for JavaScript is unclear). [0]: https://github.com/apple/swift-argument-parser https://github.com/apple/swift-argument-parser