blob: a84f542cfc940a68d02fce6a70b4114b7a55be7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# ship - shellscript installation processor
This utility is used to build modular shell scripts using recursive macro
expansion.
## Quickstart Guide
BUILD_PATH=libs ./build compile INPUTFILE OUTPUTFILE
If this doesn't make science to you, then prepend `debug=true` to get all
the intermediate files printed to stdout.
## Make Interface
Put libraries into `lib`.
Put executables into `src`.
Build all executables from `src` into `tmp` with
make [all]
Build all executables from `src` into `tmp` and `//bin` with
make install
Undo `make [all]` with
make clean
Undo `make install` with
make distclean
## Macro Development
To define a new macro, you have to add a function like
## usage: BRE -> FUNCTION_NAME \1 [\2 ...]
where `BRE` is a basic regular expression, that has to match a whole
line. `FUNCTION_NAME` should be the name of a function that outputs
a `sed` script. `\1` refers to the line number, where the macro is
used and `\2 ...` are the backreferences into `BRE`. E.g.
## usage: #@date \([.*]\) -> build_datemacro \1 \2
build_datemacro() {
printf '%da\\\n%s\n' "$1" "$(date +"$2")"
}
Like in this example, the line number `\1`, which gets mapped to `$1`,
is usually used to only change the line, where the macro got called.
The second argument gets passed as format specifier to `date`.
Further examples can be found in `./build`.
|