I use make for the first case a lot. If there was a tool for running bash functions from a predefined file just as easy and ubiquitous as make, I would switch in a heartbeat.
Well technically simple to do, that misses the point.
That is neither ubiquitous, nor (as a result), trivial for a newcomer to understand.
If I clone a repo and see a makefile, I know what to do.
If I clone a repo and see './hack.sh' or './runme' or './do' or whatever you chose to call it, I have no clue whether I should invoke it or not.
There are few alternatives to make that have the same level of mindshare, and thus the same ease of use for a given newcomer to grok what to do.
Most alternatives are language specific (e.g. "rake" in rails did a good job of building programmer expectations that you use 'rake ...' to do various common tasks).
You can extend that to a fancier function dispatcher, argument checker, etc, if you want.