blob: f68fe5eaf89f9c18822b6d0a1515fb87e125c4e1 (
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
set shell := ["bash", "-euo", "pipefail", "-c"]
NAME := "shuriken"
VERSION := "0.11.4"
DESTDIR := env_var_or_default("DESTDIR", "")
PREFIX := env_var_or_default("PREFIX", "/usr")
BINDIR := env_var_or_default("BINDIR", PREFIX + "/bin")
DATADIR := env_var_or_default("DATADIR", PREFIX + "/share")
SYSCONFDIR := env_var_or_default("SYSCONFDIR", "/etc/default")
LIB_SOURCES := "src/lib/logging.source.sh src/lib/compat.source.sh src/lib/bootstrap.source.sh src/lib/paths.source.sh src/lib/imagemagick.source.sh src/lib/process.source.sh src/lib/archive.source.sh src/lib/template.source.sh src/lib/job-pool.source.sh src/lib/image.source.sh src/lib/random.source.sh src/lib/photo-list.source.sh src/lib/metadata-label.source.sh src/lib/metadata-cache.source.sh src/lib/image-pipeline.source.sh src/lib/album-metadata.source.sh src/lib/generation-metadata.source.sh src/lib/dry-run.source.sh src/lib/album-tile-layout.source.sh src/lib/album-thumbnail-html.source.sh src/lib/album-photo-select.source.sh src/lib/album-render.source.sh src/lib/album.source.sh src/lib/stats-aggregate.source.sh src/lib/stats-render.source.sh src/lib/stats-filter-album.source.sh src/lib/config.source.sh src/lib/config.print.source.sh src/lib/config.sync.source.sh src/lib/config.staging.source.sh src/lib/config.validate.source.sh src/lib/config.cli.source.sh src/lib/action.source.sh"
default: build
all: build
version:
printf '%s\n' "{{VERSION}}"
[script]
_render-shuriken:
_render_lib_sources() {
local lib_source
local line
for lib_source in {{LIB_SOURCES}}; do
printf '\n# Inlined from %s\n' "$lib_source"
while IFS= read -r line; do
line=${line//SHURIKENVERSION/{{VERSION}}}
printf '%s\n' "$line"
done < "$lib_source"
done
}
_render_shuriken() {
local in_lib_sources=no
local line
while IFS= read -r line; do
case "$line" in
'# SHURIKEN_LIB_SOURCES_BEGIN')
printf '%s\n' "$line"
_render_lib_sources
in_lib_sources=yes
;;
'# SHURIKEN_LIB_SOURCES_END')
in_lib_sources=no
printf '\n%s\n' "$line"
;;
*)
if [ "$in_lib_sources" = no ]; then
line=${line//SHURIKENVERSION/{{VERSION}}}
printf '%s\n' "$line"
fi
;;
esac
done < "src/{{NAME}}.sh"
}
_render_shuriken
[script]
build:
mkdir -p ./bin
generated=$(mktemp "./bin/.{{NAME}}.XXXXXX")
trap 'rm -f "$generated"' EXIT
{{quote(just_executable())}} \
--quiet \
--justfile {{quote(justfile())}} \
--set NAME {{quote(NAME)}} \
--set VERSION {{quote(VERSION)}} \
--set LIB_SOURCES {{quote(LIB_SOURCES)}} \
_render-shuriken > "$generated"
chmod 0755 "$generated"
if [ -f "./bin/{{NAME}}" ] && cmp -s "$generated" "./bin/{{NAME}}"; then
chmod 0755 "./bin/{{NAME}}"
rm -f "$generated"
else
mv "$generated" "./bin/{{NAME}}"
fi
[script]
check-generated:
generated=$(mktemp)
trap 'rm -f "$generated"' EXIT
{{quote(just_executable())}} \
--quiet \
--justfile {{quote(justfile())}} \
--set NAME {{quote(NAME)}} \
--set VERSION {{quote(VERSION)}} \
--set LIB_SOURCES {{quote(LIB_SOURCES)}} \
_render-shuriken > "$generated"
chmod 0755 "$generated"
if [ ! -f "./bin/{{NAME}}" ]; then
printf '%s\n' \
"ERROR: ./bin/{{NAME}} is missing; run 'just build'." >&2
exit 1
fi
if [ ! -x "./bin/{{NAME}}" ]; then
printf '%s\n' \
"ERROR: ./bin/{{NAME}} is not executable; run 'just build'." >&2
exit 1
fi
if ! cmp -s "$generated" "./bin/{{NAME}}"; then
printf '%s\n' \
"ERROR: ./bin/{{NAME}} is stale; run 'just build'." >&2
diff -u "./bin/{{NAME}}" "$generated" || true
exit 1
fi
test: check-generated build
bash ./tests/cli.sh
install: check-generated build
install -d "{{DESTDIR}}{{BINDIR}}"
install -m 0755 "./bin/{{NAME}}" "{{DESTDIR}}{{BINDIR}}/{{NAME}}"
install -d "{{DESTDIR}}{{DATADIR}}/{{NAME}}"
rm -rf "{{DESTDIR}}{{DATADIR}}/{{NAME}}/templates"
cp -R ./share/templates "{{DESTDIR}}{{DATADIR}}/{{NAME}}/"
rm -rf "{{DESTDIR}}{{DATADIR}}/{{NAME}}/assets"
cp -R ./assets/site "{{DESTDIR}}{{DATADIR}}/{{NAME}}/assets"
install -d "{{DESTDIR}}{{SYSCONFDIR}}"
install -m 0644 \
./src/shuriken.default.conf \
"{{DESTDIR}}{{SYSCONFDIR}}/{{NAME}}"
deinstall:
rm -f "{{DESTDIR}}{{BINDIR}}/{{NAME}}"
rm -rf "{{DESTDIR}}{{DATADIR}}/{{NAME}}"
rm -f "{{DESTDIR}}{{SYSCONFDIR}}/{{NAME}}"
uninstall: deinstall
clean:
find ./bin -maxdepth 1 -type f -name '.{{NAME}}.*' -delete \
2>/dev/null || true
shellcheck:
shellcheck \
--external-sources \
--check-sourced \
./src/shuriken.sh \
./tests/cli.sh \
./tests/helpers.sh
|