sub
make-booster
sub | make-booster | |
---|---|---|
4 | 3 | |
1,733 | 8 | |
0.0% | - | |
0.0 | 10.0 | |
over 2 years ago | over 1 year ago | |
Shell | Makefile | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sub
-
The Unreasonable Effectiveness of Makefiles
Scripts in bin have no documentation, no easy way to enumerate them, etc. There is definitely a time and a place for bin scripts, especially as things grow in complexity. However the beauty of just is that there's one file (the justfile) that defines all of your project's actions. You don't have to go spelunking into bin to figure out how to tweak a compiler flag, etc. And since just will run anything there's no reason why your complex bin scripts can't just be called from a simple one liner task in a justfile.
Could your write a bash script that does stuff like enumerate all the bin scripts, pull out documentation comments, etc.? Absolutely, and people have followed that pattern for a while (see https://github.com/qrush/sub) but it's a bunch of boilerplate to copy between projects. Just pulls out that logic into a simpler config file.
- Bash-Oneliner: A collection of handy Bash One-Liners and terminal tricks
- Bashly – Create beautiful bash scripts from simple YAML configuration
-
sd: my script directory
Many moons ago Basecamp published sub (github) which runs on a similar idea with different tradeoffs being chosen.
make-booster
-
Snakemake – A framework for reproducible data analysis
For a very different approach, check out make-booster:
https://github.com/david-a-wheeler/make-booster
Make-booster provides utility routines intended to greatly simplify data processing (particularly a data pipeline) using GNU make. It includes some mechanisms specifically to help Python, as well as general-purpose mechanisms that can be useful in any system. In particular, it helps reliably reproduce results, and it automatically determines what needs to run and runs only that (producing a significant speedup in most cases). Released as open source software.
-
A Love Letter to Make
https://github.com/david-a-wheeler/make-booster
I think a lot of hate on make is due to poor use. If your makefile is complex, refactor it. Auto-generate dependencies (it only takes a few lines in GNU make). And don't use recursive make, that way lies madness. I also think GNU make is the wiser tool; POSIX make lacks too much in many cases.
-
The Unreasonable Effectiveness of Makefiles
https://github.com/david-a-wheeler/make-booster
From its readme:
"This project (contained in this directory and below) provides utility routines intended to greatly simplify data processing (particularly a data pipeline) using GNU make. It includes some mechanisms specifically to help Python, as well as general-purpose mechanisms that can be useful in any system. In particular, it helps reliably reproduce results, and it automatically determines what needs to run and runs only that (producing a significant speedup in most cases)."
"For example, imagine that Python file BBB.py says include CC, and file CC.py reads from file F.txt (and CC.py declares its INPUTS= as described below). Now if you modify file F.txt or CC.py, any rule that runs BBB.py will automatically be re-run in the correct order when you use make, even if you didn't directly edit BBB.py."
This is NOT functionality directly provided by Python, and the overhead with >1000 files was 0.07seconds which we could live with :-).
What are some alternatives?
bashly - Bash command line framework and CLI generator
tclmake - Partial make clone in pure Tcl
shfmt - Dockernized shfmt. This formats shell script.
checkexec - CLI tool to conditionally execute commands only when files in a dependency list have been updated. Like `make`, but standalone.
tlog - Terminal I/O logger
snakemake-wrappers - This is the development home of the Snakemake wrapper repository, see
hofmod-cli - Hofstadter generator for Golang CLIs
mandala - A powerful and easy to use Python framework for experiment tracking and incremental computing
dagger - Application Delivery as Code that Runs Anywhere
vscode-bash-debug - Bash shell debugger extension for VSCode (based on bashdb)
just - 🤖 Just a command runner