diff --git a/Makefile b/Makefile index 5c8bf1526..7564bec18 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,6 @@ -# One of two project scripts files (Makefile, Shake.hs). -# This one was a reboot of Makefile.old. -# It is probably used by hledger developers/contributors but not end-users. -# It requires GNU Make (https://www.gnu.org/software/make/). -# Also, some rules may require: +# Project scripts, some with file dependencies, using GNU Make. +# Soon to be migrated to justfile or Shake.hs hopefully. +# Also uses tools like # - stack (http://haskell-lang.org/get-started, installs libs and runs ghc) # - shelltestrunner (hackage, runs functional tests) # - quickbench (hackage/stackage, runs benchmarks) @@ -12,21 +10,6 @@ # - profiteur (hackage/stackage, renders profiles as html) # - hpack (hackage/stackage, generates cabal files from package.yaml files) # - perl -# -# Kinds of hledger builds: -# -# - stack build: built with stack -# (hledger/.stack-work/dist/ARCH/CABAL/build/hledger/hledger, -# .stack-work/install/ARCH/SNAPSHOT/GHC/bin/hledger, installs to ~/.local/bin) -# - cabal (v1) build: built with cabal (and maybe a sandbox) -# (hledger/dist/build/hledger/hledger, installs to ~/.cabal/bin) -# - ghc-only build: built quickly with ghc only, unoptimised, with DEVELOPMENT flag -# (hledgerdev) -# -# This makefile mostly uses stack to get things done (slow but robust). -# It may sometimes (still ?) use ghc only, or cabal, when easier. - -# see also: https://gmsl.sourceforge.io/ # XXX do we need this ? #SHELL=/bin/bash diff --git a/Shake.hs b/Shake.hs index 39b468d47..28db69032 100755 --- a/Shake.hs +++ b/Shake.hs @@ -14,22 +14,12 @@ -- add this to see packages being installed instead of a long silence: --verbosity=info -This is one of two collections of maintainer/developer scripts; Makefile is the other. -This one, based on shake, provides a stronger programming language and -more platform independence. It requires stack and will auto-install -the haskell packages above when needed. - -Some of the commands below require additional command-line tools, including: +Heavy project scripts, with file dependencies, using https://shakebuild.com. +See also justfile, Makefile. +Also uses tools like: - hpack (same version that's in current stack release) -- GNU date (on mac: brew install coreutils) -- groff -- m4 -- makeinfo -- pandoc -- sed -- mv -- cat -- rm +- GNU date (on mac, get it with brew install coreutils) +- pandoc, groff, m4, makeinfo, sed, mv, cat, rm Some things that may be useful when working on this: - https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter @@ -66,7 +56,7 @@ usage = let scriptname = "Shake" in replaceRe [re|/Shake|] ('/':scriptname) $ unlines ---------------------------------------79-------------------------------------- - ["Shake: heavy project scripting. See also: make, ./bake" + ["Shake: heavy project scripting. See also: justfile, Makefile" ,"Usage:" ,"./Shake.hs [CMD [ARGS]] run CMD, compiling this script first if needed" ,"./Shake [CMD [ARGS]] run CMD, using the compiled version of this script" diff --git a/justfile b/justfile index ba456001b..2c9779bee 100644 --- a/justfile +++ b/justfile @@ -1,5 +1,9 @@ -# * project task scripts managed with https://github.com/casey/just. -# This aspires to gradually replace Makefile and bake. +#!/usr/bin/env just +# * Light project scripts, without file dependendencies, using https://github.com/casey/just. +# https://docs.rs/regex/1.5.4/regex/#syntax Regexps +# https://just.systems/man/en/chapter_31.html Functions +# See also Makefile, Shake.hs + @help: just -lu