checkexec
make-booster
checkexec | make-booster | |
---|---|---|
4 | 3 | |
80 | 8 | |
- | - | |
0.0 | 10.0 | |
over 1 year ago | almost 2 years ago | |
Rust | 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.
checkexec
-
The Unreasonable Effectiveness of Makefiles
You might find checkexec useful to pair with just, it is basically a tool that only does the file-based dependency part of make: https://github.com/kurtbuilds/checkexec
-
Just 1.0 released!
If you specifically need the "update if modified" functionality from Make, I actually made a command specifically for this called checkexec. I use it for image processing, building C libraries, building CSS files, and a few other use cases. It saves meaningful time on repeated execution runs.
-
Best way to "watch" files with no daemon running?
Are you just trying to look at file modified time stamps? checkexec might be what you’re after.
- checkexec: a CLI tool to conditionally execute commands only when files in a dependency list have changed
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?
just - 🤖 Just a command runner
tclmake - Partial make clone in pure Tcl
inotify-rs - Idiomatic inotify wrapper for the Rust programming language
snakemake-wrappers - This is the development home of the Snakemake wrapper repository, see
cargo-husky - Setup Git hooks automatically for cargo projects with :dog:
mandala - A powerful and easy to use Python framework for experiment tracking and incremental computing
justl.el - Major mode for driving just files.
dagger - Application Delivery as Code that Runs Anywhere
pre-commit-hooks - Some out-of-the-box hooks for pre-commit
vim-just - Vim Just Syntax
handlebars.c - C implementation of handlebars.js