feat: add deb, pkgbuild, completion, code improvements
This commit is contained in:
parent
8999940443
commit
ce07669a6e
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,5 +1,4 @@
|
|||||||
*.txt
|
*.txt
|
||||||
dist/
|
dist/
|
||||||
src/backups/
|
debian/
|
||||||
src/clean
|
|
||||||
NOTE.todo
|
NOTE.todo
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
boring_backup (0.1.0) testing; urgency=medium
|
||||||
|
|
||||||
CHANGELOG
|
CHANGELOG
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
@ -6,3 +8,5 @@ CHANGELOG
|
|||||||
0.1.0
|
0.1.0
|
||||||
|
|
||||||
Initial release.
|
Initial release.
|
||||||
|
|
||||||
|
-- ge Sun, 09 Oct 2022 02:17:10 +0300
|
||||||
|
23
Makefile
23
Makefile
@ -5,7 +5,7 @@ BUILD_DIR := ./dist
|
|||||||
|
|
||||||
.PHONY: help tests manpages install uninstall fixpath
|
.PHONY: help tests manpages install uninstall fixpath
|
||||||
|
|
||||||
all: manpages
|
all: help
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo 'Usage: make TARGET'
|
@echo 'Usage: make TARGET'
|
||||||
@ -55,7 +55,7 @@ html: manpages
|
|||||||
> $(BUILD_DIR)/share/doc/boring_backup/boring_backup.1.html 2>/dev/null
|
> $(BUILD_DIR)/share/doc/boring_backup/boring_backup.1.html 2>/dev/null
|
||||||
rm -v grohtml-*.png
|
rm -v grohtml-*.png
|
||||||
|
|
||||||
install: manpages
|
install: html
|
||||||
@echo prefix: $$prefix
|
@echo prefix: $$prefix
|
||||||
install -Dm755 $(SRC_DIR)/boring_backup $$prefix/bin/boring_backup
|
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/lib.sh $$prefix/share/boring_backup/lib.sh
|
||||||
@ -71,7 +71,11 @@ install: manpages
|
|||||||
sed -e "s%LIBRARY=\"\$${LIBRARY:-.\/lib}\"%LIBRARY=\"\$${LIBRARY:-$$prefix\/share\/boring_backup}\"%" \
|
sed -e "s%LIBRARY=\"\$${LIBRARY:-.\/lib}\"%LIBRARY=\"\$${LIBRARY:-$$prefix\/share\/boring_backup}\"%" \
|
||||||
-i $$prefix/share/boring_backup/lib.sh \
|
-i $$prefix/share/boring_backup/lib.sh \
|
||||||
-i $$prefix/bin/boring_backup
|
-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 -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:
|
uninstall:
|
||||||
@echo prefix: $$prefix
|
@echo prefix: $$prefix
|
||||||
@ -88,11 +92,24 @@ uninstall:
|
|||||||
rm $$prefix/share/boring_backup/handlers/targets/s3cmd.sh
|
rm $$prefix/share/boring_backup/handlers/targets/s3cmd.sh
|
||||||
rm -rv $$prefix/share/boring_backup
|
rm -rv $$prefix/share/boring_backup
|
||||||
rm $$prefix/share/man/ru/man1/boring_backup.1.gz
|
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:
|
fixpath:
|
||||||
# Set boring_backup library path
|
# Set boring_backup library path
|
||||||
@echo prefix: $$prefix
|
@echo prefix: $$prefix
|
||||||
@echo path: $$path
|
@echo path: $$path
|
||||||
sed -e "s%LIBRARY=\"\$${LIBRARY:-.\/lib}\"%LIBRARY=\"\$${LIBRARY:-$$path}\"%" \
|
sed -e "s%LIBRARY=\"\$${LIBRARY:-$$prefix\/share\/boring_backup}\"%LIBRARY=\"\$${LIBRARY:-$$path}\"%" \
|
||||||
-i $$prefix/share/boring_backup/lib.sh \
|
-i $$prefix/share/boring_backup/lib.sh \
|
||||||
-i $$prefix/bin/boring_backup
|
-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
|
||||||
|
25
PKGBUILD
Normal file
25
PKGBUILD
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
pkgname=boring-backup
|
||||||
|
pkgver=0.1.0
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Files and databases backup"
|
||||||
|
arch=(any)
|
||||||
|
url=https://git.nxhs.cloud/ge/boring_backup
|
||||||
|
license=(GPL3)
|
||||||
|
depends=(bash coreutils)
|
||||||
|
makedepends=(git make )
|
||||||
|
provides=('boring_backup')
|
||||||
|
conflicts=('boring_backup')
|
||||||
|
source=('git+https://git.nxhs.cloud/ge/boring_backup')
|
||||||
|
sha256sums=(SKIP)
|
||||||
|
build() {
|
||||||
|
cd "$srcdir/$pkgname"
|
||||||
|
make prefix=dist/usr install
|
||||||
|
make prefix=dist/usr path=/usr/share/boring_backup fixpath
|
||||||
|
}
|
||||||
|
package() {
|
||||||
|
install -Dm755 dist/usr/bin/boring_backup $pkgdir/usr/bin/boring_backup
|
||||||
|
install -Dm644 dist/usr/share/man/ru/man1/boring_backup.1.gz $pkgdir/usr/share/man/ru/man1/boring_backup.1.gz
|
||||||
|
install -Dm644 dist/usr/share/bash-completion/completions/boring_backup $pkgdir/usr/share/bash-completion/completions/boring_backup
|
||||||
|
install -Dm644 dist/usr/share/doc/boring_backup/boring_backup.1.html $pkgdir/usr/share/doc/boring_backup/boring_backup.1.html
|
||||||
|
install -Dm644 dist/usr/share/boring_backup/* $pkgdir/usr/share/boring_backup
|
||||||
|
}
|
9
control
Normal file
9
control
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Package: boring-backup
|
||||||
|
Version: 0.1.0
|
||||||
|
Section: admin
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: ge
|
||||||
|
Homepage: https://nixhacks.net/boring_backup/
|
||||||
|
Architecture: all
|
||||||
|
Depends: bash, coreutils
|
||||||
|
Description: Backup files and databases.
|
38
copyright
Normal file
38
copyright
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: boring-backup
|
||||||
|
Upstream-Contact: https://nixhacks.net/boring_backup
|
||||||
|
Source: https://nixhacks.net/boring_backup
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2022 ge
|
||||||
|
License: GPL-3.0+
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 2022 ge
|
||||||
|
License: GPL-3.0+
|
||||||
|
|
||||||
|
License: GPL-3.0+
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
.
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
.
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
.
|
||||||
|
On Debian systems, the complete text of the GNU General
|
||||||
|
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
|
||||||
|
|
||||||
|
# Please also look if there are files or directories which have a
|
||||||
|
# different copyright/license attached and list them here.
|
||||||
|
# Please avoid picking licenses with terms that are more restrictive than the
|
||||||
|
# packaged work, as it may make Debian's contributions unacceptable upstream.
|
||||||
|
#
|
||||||
|
# If you need, there are some extra license texts available in two places:
|
||||||
|
# /usr/share/debhelper/dh_make/licenses/
|
||||||
|
# /usr/share/common-licenses/
|
@ -131,11 +131,11 @@ postgres
|
|||||||
|
|
||||||
См. также ``src_pg_dump``
|
См. также ``src_pg_dump``
|
||||||
|
|
||||||
sqlite [НЕ РЕАЛИЗОВАН]
|
sqlite
|
||||||
Схема для баз данных SQLite. Мало отличается от `file`, добавлена для
|
Схема для баз данных SQLite. То же самое что и `file`, добавлена для
|
||||||
наглядного обозначения, что ресурсом является БД SQLite, а не иной файл.
|
наглядного обозначения, что ресурсом является БД SQLite, а не иной файл.
|
||||||
|
|
||||||
См. также ``src_sqlite``
|
См. также ``src_tar``
|
||||||
|
|
||||||
s3
|
s3
|
||||||
Схема Simple Storage Service (S3). Пример использования::
|
Схема Simple Storage Service (S3). Пример использования::
|
||||||
@ -247,12 +247,25 @@ s3
|
|||||||
tzst zstd .zst .tzst
|
tzst zstd .zst .tzst
|
||||||
==================== ========== =================== =====================
|
==================== ========== =================== =====================
|
||||||
|
|
||||||
|
``log_file``
|
||||||
|
| Тип: строка
|
||||||
|
| Умолчание: /var/log/boring_backup.log
|
||||||
|
|
||||||
|
Лог файл.
|
||||||
|
|
||||||
``log_date_format``
|
``log_date_format``
|
||||||
| Тип: строка
|
| Тип: строка
|
||||||
| Умолчание: %d/%b/%Y:%H:%M:%S %z
|
| Умолчание: %d/%b/%Y:%H:%M:%S %z
|
||||||
|
|
||||||
Формат даты в логе. См. ``date``. См. **КОНФИГУРИРОВАНИЕ**.
|
Формат даты в логе. См. ``date``. См. **КОНФИГУРИРОВАНИЕ**.
|
||||||
|
|
||||||
|
``make_target_dir``
|
||||||
|
| Тип: булев
|
||||||
|
| Умолчение: нет
|
||||||
|
|
||||||
|
Эта переменная используется как флаг разрешающий создание директорий из
|
||||||
|
`targets` с помощью **mkdir -p**.
|
||||||
|
|
||||||
``name``
|
``name``
|
||||||
| Тип: строка
|
| Тип: строка
|
||||||
| Умолчание: нет
|
| Умолчание: нет
|
||||||
@ -419,7 +432,7 @@ s3
|
|||||||
|
|
||||||
Функция записывает сообщения в лог-файл. Лог-файл может быть задан через
|
Функция записывает сообщения в лог-файл. Лог-файл может быть задан через
|
||||||
опцию **--log-file**, имя этого файла будет сохранено в переменную
|
опцию **--log-file**, имя этого файла будет сохранено в переменную
|
||||||
$__log_file. **log** перед записью в файл удаляет из текста
|
$log_file. **log** перед записью в файл удаляет из текста
|
||||||
escape-последовательности ANSI.
|
escape-последовательности ANSI.
|
||||||
|
|
||||||
Формат лога '[%s] %s\\n', где первое вхождение %s заменяется на дату, а
|
Формат лога '[%s] %s\\n', где первое вхождение %s заменяется на дату, а
|
||||||
@ -574,7 +587,6 @@ s3
|
|||||||
удалением локальных бэкапов после загрузки::
|
удалением локальных бэкапов после загрузки::
|
||||||
|
|
||||||
compression=xz
|
compression=xz
|
||||||
s3cmd_config=~/.s3cfg
|
|
||||||
sources=(
|
sources=(
|
||||||
/var/www/www-data/example.com
|
/var/www/www-data/example.com
|
||||||
mysql://example_user:Smk3mVH2@localhost/example_db
|
mysql://example_user:Smk3mVH2@localhost/example_db
|
||||||
@ -586,7 +598,7 @@ s3
|
|||||||
finalise() {
|
finalise() {
|
||||||
log -p "\tClean up local backups"
|
log -p "\tClean up local backups"
|
||||||
log -p "\tFiles to delete: ${backups[@]}"
|
log -p "\tFiles to delete: ${backups[@]}"
|
||||||
rm -- "${backups[@]}"
|
rm -rfv -- "${backups[@]}"
|
||||||
log -p "\tLocal backups deleted"
|
log -p "\tLocal backups deleted"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
src/completely.yaml
Normal file
11
src/completely.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# See https://github.com/DannyBen/completely
|
||||||
|
|
||||||
|
boring_backup:
|
||||||
|
- --help
|
||||||
|
- --version
|
||||||
|
- --verbose
|
||||||
|
- --config
|
||||||
|
- --log-file
|
||||||
|
- --pid-file
|
||||||
|
- --use-syslog
|
||||||
|
- <file>
|
39
src/completion
Normal file
39
src/completion
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# boring_backup completion -*- shell-script -*-
|
||||||
|
|
||||||
|
# This bash completions script was generated by
|
||||||
|
# completely (https://github.com/dannyben/completely)
|
||||||
|
# Modifying it manually is not recommended
|
||||||
|
|
||||||
|
_boring_backup_completions_filter() {
|
||||||
|
local words="$1"
|
||||||
|
local cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
local result=()
|
||||||
|
|
||||||
|
if [[ "${cur:0:1}" == "-" ]]; then
|
||||||
|
echo "$words"
|
||||||
|
|
||||||
|
else
|
||||||
|
for word in $words; do
|
||||||
|
[[ "${word:0:1}" != "-" ]] && result+=("$word")
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "${result[*]}"
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_boring_backup_completions() {
|
||||||
|
local cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
local compwords=("${COMP_WORDS[@]:1:$COMP_CWORD-1}")
|
||||||
|
local compline="${compwords[*]}"
|
||||||
|
|
||||||
|
case "$compline" in
|
||||||
|
*)
|
||||||
|
while read -r; do COMPREPLY+=( "$REPLY" ); done < <( compgen -A file -W "$(_boring_backup_completions_filter "--help --version --verbose --config --log-file --pid-file --use-syslog")" -- "$cur" )
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
} &&
|
||||||
|
complete -F _boring_backup_completions boring_backup
|
||||||
|
|
||||||
|
# ex: filetype=sh
|
@ -35,7 +35,7 @@ process_source() {
|
|||||||
# ^^^ hide password from output ^^^
|
# ^^^ hide password from output ^^^
|
||||||
|
|
||||||
case "$scheme" in
|
case "$scheme" in
|
||||||
file) handler='src_tar';;
|
file|sqlite) handler='src_tar';;
|
||||||
mysql|mariadb) handler='src_mysqldump';;
|
mysql|mariadb) handler='src_mysqldump';;
|
||||||
postgres) handler='src_pg_dump';;
|
postgres) handler='src_pg_dump';;
|
||||||
sqlite) handler='src_sqlite';;
|
sqlite) handler='src_sqlite';;
|
||||||
|
@ -36,7 +36,7 @@ src_tar() {
|
|||||||
parse_uri "$uri"
|
parse_uri "$uri"
|
||||||
|
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
if [[ "$scheme" != 'file' ]]; then
|
if [[ ! "$scheme" =~ ^(file|sqlite)$ ]]; then
|
||||||
log -p "Error: Wrong URI scheme: $scheme" >&2; exit 1
|
log -p "Error: Wrong URI scheme: $scheme" >&2; exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user