diff options
author | EuAndreh <eu@euandre.org> | 2024-05-11 11:33:32 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2024-06-05 11:16:58 -0300 |
commit | d6834c1ac234db733ab79c93f5957f27f809eb0a (patch) | |
tree | 84a586e9ab24fdb12b26542521b630e971518f36 | |
parent | Initial empty commit (diff) | |
download | backupit-d6834c1ac234db733ab79c93f5957f27f809eb0a.tar.gz backupit-d6834c1ac234db733ab79c93f5957f27f809eb0a.tar.xz |
Add imported code from dotfiles
-rw-r--r-- | Makefile | 89 | ||||
-rw-r--r-- | deps.mk | 4 | ||||
-rwxr-xr-x | mkdeps.sh | 13 | ||||
-rwxr-xr-x | src/backupit | 34 | ||||
-rwxr-xr-x | src/borgy | 8 |
5 files changed, 148 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f0d91f4 --- /dev/null +++ b/Makefile @@ -0,0 +1,89 @@ +.POSIX: +DATE = 1970-01-01 +VERSION = 0.1.0 +NAME = backupit +NAME_UC = $(NAME) +LANGUAGES = en +## Installation prefix. Defaults to "/usr". +PREFIX = /usr +BINDIR = $(PREFIX)/bin +LIBDIR = $(PREFIX)/lib +INCLUDEDIR = $(PREFIX)/include +SRCDIR = $(PREFIX)/src/$(NAME) +SHAREDIR = $(PREFIX)/share +LOCALEDIR = $(SHAREDIR)/locale +MANDIR = $(SHAREDIR)/man +EXEC = ./ +## Where to store the installation. Empty by default. +DESTDIR = +LDLIBS = + + + +.SUFFIXES: + + + +all: +include deps.mk + + +sources = \ + $(sources.sh) \ + + +derived-assets = \ + +side-assets = \ + + + +## Default target. Builds all artifacts required for testing +## and installation. +all: $(derived-assets) + + + +check-unit: + + +check-integration: + + +## Run all tests. Each test suite is isolated, so that a parallel +## build can run tests at the same time. The required artifacts +## are created if missing. +check: check-unit check-integration + + + +## Remove *all* derived artifacts produced during the build. +## A dedicated test asserts that this is always true. +clean: + rm -rf $(derived-assets) $(side-assets) + + +## Installs into $(DESTDIR)$(PREFIX). Its dependency target +## ensures that all installable artifacts are crafted beforehand. +install: all + mkdir -p \ + '$(DESTDIR)$(BINDIR)' \ + '$(DESTDIR)$(SRCDIR)' \ + + cp $(sources.sh) '$(DESTDIR)$(BINDIR)' + cp $(sources.sh) '$(DESTDIR)$(SRCDIR)' + + +## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror +## of the "install" target, and removes *all* that was installed. +## A dedicated test asserts that this is always true. +uninstall: + rm -rf \ + '$(DESTDIR)$(SRCDIR)' \ + + for f in $(sources.sh); do \ + rm -f '$(DESTDIR)$(BINDIR)'/"$${f#src/}"; \ + done + + +ALWAYS: @@ -0,0 +1,4 @@ +sources.sh = \ + src/backupit \ + src/borgy \ + diff --git a/mkdeps.sh b/mkdeps.sh new file mode 100755 index 0000000..8204798 --- /dev/null +++ b/mkdeps.sh @@ -0,0 +1,13 @@ +#!/bin/sh +set -eu + +export LANG=POSIX.UTF-8 + +varlist() { + printf '%s = \\\n' "$1" + sort | sed 's|^\(.*\)$|\t\1 \\|' + printf '\n' +} + + +find src/* -type f -perm -111 | varlist 'sources.sh' diff --git a/src/backupit b/src/backupit new file mode 100755 index 0000000..54c9581 --- /dev/null +++ b/src/backupit @@ -0,0 +1,34 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: + backupit [-q] [TAG] + EOF +} + +VERBOSE_FLAGS='--verbose --progress' +while getopts 'q' flag; do + case "$flag" in + (q) + VERBOSE_FLAGS='' + ;; + (*) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + + +TAG="${1:-default}" +ARCHIVE="::{hostname}-{user}-{now}-$TAG" + +F="$XDG_CONFIG_HOME"/backupit.txt +if [ ! -e "$F" ]; then + F=/etc/backup.txt +fi + +borgy $VERBOSE_FLAGS "$ARCHIVE" $(cat "$F") diff --git a/src/borgy b/src/borgy new file mode 100755 index 0000000..7a6f62a --- /dev/null +++ b/src/borgy @@ -0,0 +1,8 @@ +#!/bin/sh +set -eu + +nicely statusconv 1:0 borg create \ + --exclude-nodump \ + --stats \ + --compression lzma,9 \ + "$@" |