116 lines
4.9 KiB
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
|