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