diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb74213 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +zvirt-*.tar.gz diff --git a/Makefile b/Makefile index 41aa24b..ef5ff9a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ PREFIX ?= /usr/local -.PHONY: all test unit-test syntax-test e2e-test lint clean prerequisites install +.PHONY: all test unit-test syntax-test e2e-test lint clean prerequisites install uninstall release tarball install-tarball -all: syntax-test unit-test e2e-test lint install +all: syntax-test lint unit-test e2e-test release syntax-test: @echo "Running syntax tests..." @@ -12,6 +12,8 @@ prerequisites: @echo "Installing prerequisites..." @/bin/bash -Eeuo pipefail -c 'if ! bats --version &>/dev/null; then dnf install -y bats; fi' @/bin/bash -Eeuo pipefail -c 'if ! yq --version &>/dev/null; then dnf install -y yq; fi' + @/bin/bash -Eeuo pipefail -c 'if ! shellcheck --version &>/dev/null; then dnf install -y shellcheck; fi' + @/bin/bash -Eeuo pipefail -c 'if ! gh --version &>/dev/null; then dnf install -y gh; fi' unit-test: prerequisites @echo "Running unit tests..." @@ -32,15 +34,21 @@ uninstall: @rm -f $(PREFIX)/bin/zvirt @rm -rf $(PREFIX)/lib/zvirt -release: +tarball: @echo "Creating release tarball..." @set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); tar --exclude-vcs --exclude='*.swp' -czf zvirt-$$VERSION.tar.gz --transform "s|^src|zvirt-$$VERSION|" src -install-release: +install-tarball: tarball @echo "Installing zvirt from release tarball..." @set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); tar -xvzf zvirt-$$VERSION.tar.gz --strip-components=1 -C $(PREFIX) + + +release: prerequisites tarball + @echo "Creating GitHub release..." + @set -Eeuo pipefail; VERSION=$$(git describe --tags --abbrev=0); gh release create $$VERSION zvirt-$$VERSION.tar.gz --draft --title "zvirt $$VERSION" --notes "Release $$VERSION of zvirt." + clean: -lint: +lint: prerequisites @echo "Linting..." - @shellcheck src/bin/zvirt src/lib/zvirt/*.sh + @cd src && shellcheck --severity=error bin/zvirt lib/zvirt/*.sh diff --git a/src/lib/zvirt/core.sh b/src/lib/zvirt/core.sh index c4e4207..32f1f50 100644 --- a/src/lib/zvirt/core.sh +++ b/src/lib/zvirt/core.sh @@ -1,3 +1,9 @@ +#!/bin/bash + +## +## zvirt core library - Provides functions for taking and reverting snapshots of libvirt domains using ZFS. +## + # Reports a verbose message to stdout if verbose mode is enabled. function log_verbose () { if [ "$verbose" -eq 1 ]; then @@ -7,13 +13,13 @@ function log_verbose () { # Reports a fatal error message to stderr and exits with a non-zero exit code. function fatal () { - echo "Error: $@" 2>&1 + echo "Error: $*" 2>&1 exit 1 } # Reports an error message to stderr. function error () { - echo "Error: $@" 2>&1 + echo "Error: $*" 2>&1 } function show_help () {