The most common thing I want to say to GitHub projects is "Please use Make".
It's old as dirt and the syntax isn't great, but even in its simplest use being able to reduce a wall of shell copypasta to "make whatever" is such a breath of fresh air.
Get yourself to where "install", "install-devenv", "build" and "run all my tests" are all dead easy, zero chaff, no typos simple. And if you find yourself re-using some long command chain, add it to the makefile and you're done. It is so good.
@mhoye yes!
(besides: you can make beautiful help output with make help: https://hg.sr.ht/~arnebab/conf/browse/templates/lang--generic/Makefile.am.tail?rev=tip )
(that’s from proj, a generic autotools template generating utility I wrote but for which I never created many templates and which I never described, so it’s basically unknown …)
@ArneBab @mhoye Im investigating the potential of Mega makefiles:
Here is an example of a WIP:
https://git.sr.ht/~indieterminacy/1q20hqh_oqo_parsing_icemaqr/tree/main/item/Makefile#L531
From a chain of referenced keyvalues and components it builds an awk script that then emits a #TXR parsing-expression-grammar.
In this example keyvalues in a fedidocs repo for instance documentation:
https://git.sr.ht/~indieterminacy/1q20hqh_oqo_parsing_icemaqr/tree/main/item/owo-hwh_mq-mqm_searching-values-not-at_fediverse-actor.txr
Im tempted to make makefiles a repository of truth rather than databases.
I find that its particularly satisfying using keyvalues across languages
@indieterminacy @mhoye woah, that sounds like fun
though makefiles actually do solve a lot of problems. I remember people asking me “how can I rebuild all the files affected by the change?” — well: just make a Makefile. But use a sane client that highlights it when you accidentally use spaces instead of tabs for the command
@indieterminacy (did you try content-based makefiles already? creating checksums and only writing them into the checksum file (⇒ changing mod date) when it changed) @mhoye
@ArneBab @mhoye Given me time, I need to do a lot of refactoring and build out functionality.
My idea is to create 'heatmaps', bespoke parser grammars formed by pointing makefiles at content and then getting a type of abstraction layer of relevant things (but also with the appropriate catches).
I reckon when in play it will save a lot of boilerplate and keep content in sync.
Im banking that any of the clunk and problems can be filled in with Emacs and Guix
& this too:
https://guix-forge.systemreboot.net/
@ArneBab @mhoye Ive done this experiment wrt hashes:
https://git.sr.ht/~indieterminacy/1q20hqh_kq-owo_interpreting_gemtext-glint
The logic was that rather than hashing just the file that subsets chunks are done, using different interpreters.
The interpreters didnt even necessarily have to be complete or fully functioning (though of course it helps!), as those interpreted content being hashes would serve as synonyms for what the content truly it (or is composed of)