mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
;shake: cleanups
This commit is contained in:
parent
1e2e83ab7e
commit
fe0253eddb
66
Shake.hs
66
Shake.hs
@ -5,6 +5,7 @@
|
||||
--package base-prelude
|
||||
--package directory
|
||||
--package extra
|
||||
--package process
|
||||
--package regex
|
||||
--package safe
|
||||
--package shake
|
||||
@ -12,36 +13,26 @@
|
||||
-}
|
||||
{-
|
||||
|
||||
One of two project scripts files (Makefile, Shake.hs). This one
|
||||
provides a stronger programming language and more platform
|
||||
independence than Make. It requires stack and will auto-install the
|
||||
haskell packages above when needed (on first run or when a new
|
||||
resolver is configured in stack.yaml). Some rules below use additional
|
||||
tools, including:
|
||||
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:
|
||||
- GNU date (on mac: brew install coreutils)
|
||||
- groff
|
||||
- m4
|
||||
- makeinfo
|
||||
- pandoc
|
||||
- sed
|
||||
- GNU date (on mac: brew install coreutils)
|
||||
|
||||
Compiling this script is recommended, to ensure required packages are
|
||||
installed, minimise startup delay, and reduce sensitivity to the
|
||||
current git state (eg when bisecting). To compile, run "./Shake.hs".
|
||||
(Or "make Shake", or any other make rule depending on Shake).
|
||||
|
||||
Once compiled, run ./Shake without any arguments to list commands and
|
||||
targets (see below).
|
||||
|
||||
When developing/troubleshooting this script, these are useful:
|
||||
|
||||
watch Shake.hs for compile errors: make ghcid-shake
|
||||
load Shake.hs in GHCI: make ghci-shake
|
||||
rebuild things when files change with entr (file watcher), eg:
|
||||
find hledger-lib hledger | entr ./Shake manuals
|
||||
view rule dependency graph:
|
||||
./Shake --report, open report.html?mode=rule-graph&query=!name(/(doc%7Cimages%7Cjs%7Ccss%7Cfonts%7Ctime%7Capi%7Cui%7Ccsv)/)
|
||||
Some things that may be useful when working on these scripts:
|
||||
- watch Shake.hs for compile errors: make ghcid-shake
|
||||
- load Shake.hs in GHCI: make ghci-shake
|
||||
- rebuild things when files change with entr (file watcher), eg:
|
||||
find hledger-lib hledger | entr ./Shake manuals
|
||||
- view rule dependency graph:
|
||||
./Shake --report, open report.html?mode=rule-graph&query=!name(/(doc%7Cimages%7Cjs%7Ccss%7Cfonts%7Ctime%7Capi%7Cui%7Ccsv)/)
|
||||
|
||||
-}
|
||||
|
||||
@ -66,10 +57,17 @@ import "shake" Development.Shake.FilePath
|
||||
import "time" Data.Time
|
||||
-- import "hledger-lib" Hledger.Utils.Debug
|
||||
|
||||
usage = unlines
|
||||
usage =
|
||||
let scriptname = "Shake" in replaceRe [re|/Shake|] ('/':scriptname) $
|
||||
unlines
|
||||
---------------------------------------79--------------------------------------
|
||||
["Usage:"
|
||||
,"./Shake.hs (re)compile this script"
|
||||
["hledger developer's helper. See also: make help"
|
||||
,"Usage:"
|
||||
,"./Shake.hs [CMD] run this script, compiling it first if needed"
|
||||
,"./Shake [CMD] run the compiled version of this script directly"
|
||||
,"./Shake list commands"
|
||||
,"./Shake --help list Shake options (--color, --rebuild, ...)"
|
||||
,"Commands:"
|
||||
,"./Shake commandhelp build help texts for the hledger CLI"
|
||||
,"./Shake manuals build txt/man/info/web manuals for all packages"
|
||||
,"./Shake webmanuals build web manuals (in site/) for all packages"
|
||||
@ -80,7 +78,6 @@ usage = unlines
|
||||
-- ,"./Shake website-all build the website and all web manual versions"
|
||||
,"./Shake all build all the above"
|
||||
-- ,"./Shake hledgerorg update the hledger.org website (when run on prod)"
|
||||
,""
|
||||
-- ,"./Shake mainpages build the web pages from the main repo"
|
||||
-- ,"./Shake site/index.md update wiki links on the website home page"
|
||||
,"./Shake FILE build any individual file"
|
||||
@ -89,13 +86,8 @@ usage = unlines
|
||||
,"./Shake [PKG/]CHANGES.md[-dry] update or preview this changelog"
|
||||
,"./Shake [PKG/]CHANGES.md-finalise set final release heading in this changelog"
|
||||
-- ,"./Shake site/doc/VERSION/.snapshot save current web manuals as this snapshot"
|
||||
,""
|
||||
,"./Shake clean clean help texts, manuals, staged site content"
|
||||
,"./Shake Clean also clean rendered site, object files, Shake's cache"
|
||||
,"./Shake [help] show these commands"
|
||||
,"./Shake --help show Shake options (--color, --rebuild, ...)"
|
||||
,""
|
||||
,"See also: make help"
|
||||
]
|
||||
|
||||
-- groff = "groff -c" ++ " -Wall" -- see "groff" below
|
||||
@ -755,9 +747,13 @@ pageNameToUri = (++".html") . intercalate "-" . words
|
||||
|
||||
fileNameToPageName = unwords . splitOn "-"
|
||||
|
||||
-- | Easier regex replace helper. Replaces each occurrence of a
|
||||
-- regular expression in src, by transforming each matched text with
|
||||
-- the given function.
|
||||
-- | Replace each occurrence of a regular expression by this string.
|
||||
replaceRe :: RE -> String -> String -> String
|
||||
replaceRe re repl = replaceBy re (\_ _ _ -> Just repl)
|
||||
|
||||
-- | Replace each occurrence of a regular expression, by transforming
|
||||
-- each matched text with the given function.
|
||||
replaceBy :: RE -> (Match String -> RELocation -> Capture String -> Maybe String) -> String -> String
|
||||
replaceBy re f src = replaceAllCaptures TOP f $ src *=~ re
|
||||
|
||||
-- not powerful enough, saved for reference:
|
||||
|
Loading…
Reference in New Issue
Block a user