Discussion
Forget Flags and Scripts: Just Rename the File
Quarrelsome: this is satire, right?
castral: It feels wrong but I can't quite put my finger on the reason why... It will make version control more hectic, for sure. It also seems to be conflating identification with configuration which seems non-ideal. What about versioning and upgrading? How do I find a "well-known" entry point with a file name of flags? Every read now becomes an expensive find and grep lesson... Yeah, I don't like it.
belkinpower: This is already how busybox works. These examples are taking it to a more extreme level but it's not _that_ crazy.
usefulcat: It may be a bit uncommon, but it's not at all new. For example, on a Linux system I have, there are several files in /usr/bin that use hard links to refer to the same file (inode) by different names:bunzip2 / bzcat / bzip2gunzip / uncompressunzip / zipinfopigz / unpigzpkg-config / x86_64-pc-linux-gnu-pkg-configperlbug / perlthanksUse ls -li to show the inode number for each file or directory.
Charon77: If the rename changes the entire behavior (see busybox comment) it makes sense. But defining multiple arguments? Now the author had to use -- in the file name where using space would do (and the OS splits it for you)And good luck trying to run the same programs with different arguments. You'll have to take turns renaming the file, or create hardlinks just for ephemeral arguments.It can be useful but there's time and place to do it.
csb6: Seems a lot easier to have a --help flag that lists all of the options and their function. That is self-documenting (assuming the descriptions are useful) and helps with discovery. Changing the name of the file to foo--bar.exe doesn't seem any easier than writing foo.exe --bar
ziotom78: I too was perplexed, but the main use case seems to be when you want to share a particular configuration or need to be sure that you always use the same set of flags:> Flags are ephemeral – you have to share the command line or wrap it in a script. Scripts depend on environment, which can break portability. Filenames solve both: the program describes itself, requires zero setup, and any configuration can be shared by simply renaming the file.[Emphasis added] Although I find a script that wraps the command and calls it more versatile, there might be some value in this idea for some very simple cases, like example #4.
abrookewood: You could skip the underlying mechanism by renaming Claude.exe and then it just passes the name as a new chat.
zahlman: AIUI, on Windows, pip (via the vendored `distlib`) also makes stub executables that work this way to implement the "entry points" defined in installed wheels. See: https://github.com/pypa/distlib/blob/master/PC/ReadMe.txt
nxpnsv: I guess you could rename it to foo--bar--help.exe to get the help. An awkward workflow indeed
tehbeard: That's more a case of providing the distinct "APIs" ( bzip2 , gunzip etc) to userland / scripts, while the implementation for all is just one binary; than it being "Configuration via name..."Somewhat similar to how busybox does its thing.