service/project.zsh

102 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package=service
version=0.1.0
variables+=(
LIBEXECDIR '$(PREFIX)/libexec'
SYSCONFDIR '/etc'
VARSTATEDIR '/var'
DATADIR '/srv'
)
targets=(service status gen-config get-port)
for target in service status gen-config get-port; do
type[$target]=crystal
sources[$target]=src/${target}.cr
depends[$target]=src/config.cr
done
targets+=(src/config.cr)
type[src/config.cr]=script
sources[src/config.cr]=src/config.cr.in
install[src/config.cr]=false
auto[src/config.cr]=true # Dont display it in `make help`.
chmod[src/config.cr]=0644
for file in services/*.spec; do
targets+=($file)
type[$file]=script
install[$file]='$(SHAREDIR)/services'
auto[$file]=true
chmod[$file]=0644
done
for file in templates/*.j2; do
targets+=($file)
type[$file]=script
install[$file]='$(SHAREDIR)/templates'
auto[$file]=true
chmod[$file]=0644
done
for file in utils/*; do
targets+=($file)
type[$file]=script
done
for file in doc/*; do
[[ "$file" =~ .*\.scd$ ]] || continue
targets+=(${file%.scd})
type[${file%.scd}]=scdoc
sources[${file%.scd}]=${file}
done
# FIXME: This should be upstreamed.
function script.install {
if [[ "false" = "${install[$target]}" ]]; then
ofile.install "$@"
else
binary.install "$@"
fi
}
install[status]='$(LIBEXECDIR)/service'
function scdoc.prelude {
for target in $targets; do
[[ "${type[$target]}" == "scdoc" ]] || continue
if [[ -z "${install[$target]}" ]]; then
local section="${file%.scd}"
section="${section#*.}"
install[$target]="\$(SHAREDIR)/man/man${section}"
fi
done
}
function SCD {
SED "$@" | sed 's|SED|SCD|'
}
function scdoc.build {
write "${target}: ${sources[$target]}"
write "\t@echo '$(SCD $target)'"
write "\t${Q}scdoc < ${sources[$target]} > $target || rm $target"
}
function scdoc.install {
script.install "$@"
}
function scdoc.uninstall {
script.uninstall "$@"
}
function scdoc.clean {
script.clean "$@"
}