Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Hi @brian_cloutier,

A couple of things that come to mind (although I should probably flesh out a section on the README for this):

* Auto-Generated Help From comments - There are patterns for adding a 'help' target in make that generates light documentation for the targets - I maintain a gist for such a pattern in a different github account.

* Per-Command Shell - bash, python, ruby, you decide !

* Per-Command Options/flags - With documentation!

* Positional Arguments - By default, make treats all non-variable arguments as targets, so you can't say "make action argument"

* Commands Executed in One Sub-Shell - By default make executes each line of a recipe in a separate sub-shell, requiring you to use '\' to link multiple lines into a single recipe.

No doubt make is useful for this, hence why all my dev friends use it, but make was not designed to manage non-build-related targets, and has some cracks in it with regards to that use case.

I think (hope) run can prove useful as a dedicated tool for this use case.

Thanks for the question - I hope that helps - Please let me know if you have any other comments or questions.



Thanks for the response, this is a solid list!


Thanks for that list as well!

Would you be so kind to also answer the question why one would use it over pure bash scripts?


Hi @kariert,

I think a first answer could be answering with a question:

"Why do so many people use makefiles to just manage tasks/scripts/wrappers instead of using pure bash scripts"

One reason may be that they are already using make in their project for actual build targets, but I see many pure task-only makefiles out there, so its not the only reason.

I think another reason is ease of use - The syntax is very terse and you can get a useful task runner with just a few lines of text.

With regards to Run, one of the additional features it brings is the ability for your 'commands' to be any type of script and not just bash.

You could have small scripts coded ruby, python, perl, etc all mixed together and managed within a single Runfile.

Thanks for the question - I hope that helps - Please let me know if you have any further comments or questions.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: