boring_backup/Makefile
2022-10-08 19:37:22 +03:00

99 lines
3.9 KiB
Makefile

SRC_DIR := ./src
DOCS_DIR := ./docs
TESTS_DIR := ./tests
BUILD_DIR := ./dist
.PHONY: help tests manpages install uninstall fixpath
all: manpages
help:
@echo 'Usage: make TARGET'
@echo ' make prefix=/path install'
@echo ' make prefix=/path uninstall'
@echo
@echo Available targets:
@echo
@echo ' help print this help message'
@echo ' tests run tests from $(TESTS_DIR)'
@echo ' lint run shellcheck'
@echo ' manpages build manual pages from $(DOCS_DIR)'
@echo ' install install boring-backup with prefix'
@echo ' uninstall uninstall boring-backup with prefix'
@echo
@echo 'prefix examples: $$HOME/.local, /usr/local, /usr/bin'
@echo See README for more info.
tests:
# See bats(1), https://bats-core.readthedocs.io/en/latest/index.html
for test in $(TESTS_DIR)/*.bats; do \
bats --verbose-run --print-output-on-failure "$$test"; \
done
lint:
shellcheck $(SRC_DIR)/boring-backup
shellcheck $(SRC_DIR)/lib/*.sh
shellcheck $(SRC_DIR)/lib/handlers/sources/*.sh
shellcheck $(SRC_DIR)/lib/handlers/targets/*.sh
manpages:
mkdir -pv $(BUILD_DIR)/share/man/ru/man1
# See rst2man(1)
# https://docutils.sourceforge.io/docs/index.html
rst2man -v $(DOCS_DIR)/manpages/boring-backup.ru.1.rst \
> $(BUILD_DIR)/share/man/ru/man1/boring-backup.1
sed -e 's/.SH NAME/.SH ИМЯ/' \
-e 's/.SH AUTHOR/.SH АВТОРЫ/' \
-e 's/.SH COPYRIGHT/.SH АВТОРСКИЕ ПРАВА/' \
-i $(BUILD_DIR)/share/man/ru/man1/boring-backup.1
gzip -vf9 $(BUILD_DIR)/share/man/ru/man1/boring-backup.1
html: manpages
mkdir -p $(BUILD_DIR)/share/doc/boring-backup
zcat $(BUILD_DIR)/share/man/ru/man1/boring-backup.1.gz | \
groff -man -Kutf8 -Thtml \
> $(BUILD_DIR)/share/doc/boring-backup/boring-backup.1.html 2>/dev/null
rm -v grohtml-*.png
install: manpages
@echo prefix: $$prefix
install -Dm755 $(SRC_DIR)/boring-backup $$prefix/bin/boring-backup
install -Dm644 $(SRC_DIR)/lib/lib.sh $$prefix/share/boring-backup/lib.sh
install -Dm644 $(SRC_DIR)/lib/backup.sh $$prefix/share/boring-backup/backup.sh
install -Dm644 $(SRC_DIR)/lib/common.sh $$prefix/share/boring-backup/common.sh
install -Dm644 $(SRC_DIR)/lib/source.sh $$prefix/share/boring-backup/source.sh
install -Dm644 $(SRC_DIR)/lib/uri.sh $$prefix/share/boring-backup/uri.sh
install -Dm644 $(SRC_DIR)/lib/handlers/sources/tar.sh $$prefix/share/boring-backup/handlers/sources/tar.sh
install -Dm644 $(SRC_DIR)/lib/handlers/sources/mysqldump.sh $$prefix/share/boring-backup/handlers/sources/mysqldump.sh
install -Dm644 $(SRC_DIR)/lib/handlers/sources/pg_dump.sh $$prefix/share/boring-backup/handlers/sources/pg_dump.sh
install -Dm644 $(SRC_DIR)/lib/handlers/targets/cp.sh $$prefix/share/boring-backup/handlers/targets/cp.sh
install -Dm644 $(SRC_DIR)/lib/handlers/targets/s3cmd.sh $$prefix/share/boring-backup/handlers/targets/s3cmd.sh
sed -e "s%LIBRARY=\"\$${LIBRARY:-.\/lib}\"%LIBRARY=\"\$${LIBRARY:-$$prefix\/share\/boring-backup}\"%" \
-i $$prefix/share/boring-backup/lib.sh \
-i $$prefix/bin/boring-backup
install -Dm664 $(BUILD_DIR)/share/man/ru/man1/boring-backup.1.gz $$prefix/share/man/ru/man1/boring-backup.1.gz
uninstall:
@echo prefix: $$prefix
rm $$prefix/bin/boring-backup
rm $$prefix/share/boring-backup/lib.sh
rm $$prefix/share/boring-backup/backup.sh
rm $$prefix/share/boring-backup/common.sh
rm $$prefix/share/boring-backup/source.sh
rm $$prefix/share/boring-backup/uri.sh
rm $$prefix/share/boring-backup/handlers/sources/tar.sh
rm $$prefix/share/boring-backup/handlers/sources/mysqldump.sh
rm $$prefix/share/boring-backup/handlers/sources/pg_dump.sh
rm $$prefix/share/boring-backup/handlers/targets/cp.sh
rm $$prefix/share/boring-backup/handlers/targets/s3cmd.sh
rm -rv $$prefix/share/boring-backup
rm $$prefix/share/man/ru/man1/boring-backup.1.gz
fixpath:
# Set boring-backup library path
@echo prefix: $$prefix
@echo path: $$path
sed -e "s%LIBRARY=\"\$${LIBRARY:-.\/lib}\"%LIBRARY=\"\$${LIBRARY:-$$path}\"%" \
-i $$prefix/share/boring-backup/lib.sh \
-i $$prefix/bin/boring-backup