kmarc
I usually do this by hand. Good to see a tool for it :-)

Feature request, which I would love to have in all my automation scripts:

Replace short flags with the long switches. Short flags are great when typing in a terminal but I don't want to figure out 2 years from now what the

    obscurecommand -v -f -n
does, and I have to assume that it's NOT --version --file --dry-run, but --verbose, --force, and --dont-ask-before-deleting-everything

I try to use long options in my script, therefore (especially in a team, where not everyone is familiar with every single command)

snatchpiesinger
Cool! My personal preference is Knuth-style line-breaks on binary operators and pipes, which means breaking before the operator/pipe symbol.

  foo -a -b \
  | bar -c -d -e \
  | baz -e -f
instead of

  foo -a -b | \
  bar -c -d -e | \
  baz -e -f
This doesn't seem to be an option, but could be easy to implement.
ComputerGuru
This is really cool; for a second I thought I could use it to stop manually maintaining both the minified and full-text versions of my “shell prefix” that makes it possible to run rust source code directly as if it were a shell script [0] where I’ve accidentally diverged between the two in the past, but then I revisited it and saw that the real value was in the comments and explanations more than just placing output in variables and breaking up command pipelines across shell lines.

But the opposite might work, does anyone have a good minifier they could recommend (preferably one that does more than just whitespace mangling, eg also renames variables, chains executions, etc) that doesn’t introduce bash-isms into the resulting script?

[0]: https://neosmart.net/blog/self-compiling-rust-code/

pxc
This looks really handy! I should add this to the environment for some of my shell-centric projects at work.