boring_backup/Makefile

116 lines
4.9 KiB
Makefile

SRC_DIR := ./src
DOCS_DIR := ./docs
TESTS_DIR := ./tests
BUILD_DIR := ./dist
.PHONY: help tests manpages install uninstall fixpath
all: help
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: html
@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
sed -e "s%log_file=\"\$${log_file:-.\/log.txt}\"%log_file=\"\$${log_file:-\/var\/log\/boring_backup.log}\"%g" \
-i $$prefix/bin/boring_backup
install -Dm664 $(SRC_DIR)/completion $$prefix/share/bash-completion/completions/boring_backup
install -Dm664 $(BUILD_DIR)/share/man/ru/man1/boring_backup.1.gz $$prefix/share/man/ru/man1/boring_backup.1.gz
install -Dm644 $(BUILD_DIR)/share/doc/boring_backup/boring_backup.1.html $$prefix/share/doc/boring_backup/boring_backup.1.html
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
rm $$prefix/share/doc/boring_backup/boring_backup.1.html
rm $$prefix/share/bash-completion/completions/boring_backup
fixpath:
# Set boring_backup library path
@echo prefix: $$prefix
@echo path: $$path
sed -e "s%LIBRARY=\"\$${LIBRARY:-$$prefix\/share\/boring_backup}\"%LIBRARY=\"\$${LIBRARY:-$$path}\"%" \
-i $$prefix/share/boring_backup/lib.sh \
-i $$prefix/bin/boring_backup
deb:
test -d $(BUILD_DIR) && rm -rf $(BUILD_DIR) || true
make prefix=$(BUILD_DIR)/usr install
make prefix=$(BUILD_DIR)/usr path=/usr/share/boring_backup fixpath
install -Dm644 control $(BUILD_DIR)/DEBIAN/control
install -Dm644 copyright $(BUILD_DIR)/DEBIAN/copyright
install -Dm644 CHANGELOG $(BUILD_DIR)/DEBIAN/changelog
rm -rfv $(BUILD_DIR)/share
mkdir -p debian
version=$$(src/boring_backup -V) && dpkg-deb --build $(BUILD_DIR) debian/boring-backup_$$version.deb