Why -S (script option flag) is capitalized?

, ,

Hi everybody,

I have a question I wanted to ask for a long time but never had the opportunity.

When I was learning the basics and discovered mix I was confused by the last item shown in the help listing:

~>mix help
mix                   # Runs the default task (current: "mix run")
...
mix run               # Starts and runs the current application
mix test              # Runs a project's tests
mix xref              # Prints cross reference information
iex -S mix            # Starts IEx and runs the default task

Why the heck starting IEx in the Mix Project context it’s not mix iex or something like that…
But after playing more and more I discovered that it makes total sense to use iex -S mix so that you can still pass option to IEx like --erl or --cookie etc…

But to be honest I also always wondered why the flag is capitalized -S instead of -s.
It seems that the Script option of iex is inherit from elixir but I don’t see any existing -s option (lowercase).

I’m not a vim-golfer or a script-golfer or any kind of other code-golfer, but this extra key stroke for the most used command (for me in development) mildly infuriates me.

Also, actually I’m using a shortcut to run that command so it doesn’t bother me anymore and now I can shrug too… But I just wanted to learn the reason at least. I expect it has a valid reason but I didn’t see.

5 Likes

I was exactly looking the answer to this question right now.

Can’t resist a good thread resurrect to do some detective work.

According to José Valim:

It is because everything after -S is taken as the new script to run. So it behaves differently than the other options.

9 Likes