From feac0955c0e8d019effb116ebb2f0f9b934ef700 Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Fri, 2 Oct 2026 23:36:29 +1000 Subject: [PATCH] add k8up package --- rpms/k8up/metadata.yaml | 23 +++++++++++ rpms/k8up/resources/build.sh | 17 ++++++++ rpms/k8up/resources/completions/_k8up | 16 ++++++++ rpms/k8up/resources/completions/k8up | 34 ++++++++++++++++ rpms/k8up/resources/completions/k8up.fish | 11 ++++++ rpms/k8up/resources/nfpm.yaml | 48 +++++++++++++++++++++++ 6 files changed, 149 insertions(+) create mode 100644 rpms/k8up/metadata.yaml create mode 100755 rpms/k8up/resources/build.sh create mode 100644 rpms/k8up/resources/completions/_k8up create mode 100644 rpms/k8up/resources/completions/k8up create mode 100644 rpms/k8up/resources/completions/k8up.fish create mode 100644 rpms/k8up/resources/nfpm.yaml diff --git a/rpms/k8up/metadata.yaml b/rpms/k8up/metadata.yaml new file mode 100644 index 0000000..369e12a --- /dev/null +++ b/rpms/k8up/metadata.yaml @@ -0,0 +1,23 @@ +name: k8up +github: k8up-io/k8up +github_release_pattern: ^v2\. +description: K8up Kubernetes backup operator command line client. +arch: amd64 +platform: linux +maintainer: K8up Authors +homepage: https://github.com/k8up-io/k8up +license: Apache-2.0 +dist_tag: true +builds: +- repository: + - almalinux/el9 + image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest + release: 1 + version: 2.16.0 +- repository: + - fedora/42 + - fedora/43 + - fedora/44 + image: git.unkin.net/unkin/almalinux9-rpmbuilder:latest + release: 1 + version: 2.16.0 diff --git a/rpms/k8up/resources/build.sh b/rpms/k8up/resources/build.sh new file mode 100755 index 0000000..b9f730c --- /dev/null +++ b/rpms/k8up/resources/build.sh @@ -0,0 +1,17 @@ +#!/usr/bin/bash + +set -e + +BASE_URL="https://artifactapi.k8s.syd1.au.unkin.net/api/v1/remote/github/k8up-io/k8up/releases/download/v${PACKAGE_VERSION}" +TARBALL="k8up_${PACKAGE_VERSION}_linux_amd64.tar.gz" + +wget -O "/app/${TARBALL}" "${BASE_URL}/${TARBALL}" +wget -O /app/checksums.txt "${BASE_URL}/checksums.txt" + +cd /app +grep " ${TARBALL}$" checksums.txt | sha256sum --check --strict - +tar xf "/app/${TARBALL}" -C /app/ k8up + +envsubst < /app/resources/nfpm.yaml > /app/nfpm.yaml + +nfpm pkg --config /app/nfpm.yaml --target /app/dist --packager rpm diff --git a/rpms/k8up/resources/completions/_k8up b/rpms/k8up/resources/completions/_k8up new file mode 100644 index 0000000..0e4b5aa --- /dev/null +++ b/rpms/k8up/resources/completions/_k8up @@ -0,0 +1,16 @@ +#compdef k8up + +local -a opts +local cur +cur=${words[-1]} +if [[ "$cur" == "-"* ]]; then + opts=("${(@f)$(${words[@]:0:#words[@]-1} ${cur} --generate-bash-completion 2>/dev/null)}") +else + opts=("${(@f)$(${words[@]:0:#words[@]-1} --generate-bash-completion 2>/dev/null)}") +fi + +if [[ "${opts[1]}" != "" ]]; then + _describe 'values' opts +else + _files +fi diff --git a/rpms/k8up/resources/completions/k8up b/rpms/k8up/resources/completions/k8up new file mode 100644 index 0000000..414cf08 --- /dev/null +++ b/rpms/k8up/resources/completions/k8up @@ -0,0 +1,34 @@ + +: ${PROG:=$(basename ${BASH_SOURCE})} + +# Macs have bash3 for which the bash-completion package doesn't include +# _init_completion. This is a minimal version of that function. +_cli_init_completion() { + COMPREPLY=() + _get_comp_words_by_ref "$@" cur prev words cword +} + +_cli_bash_autocomplete() { + if [[ "${COMP_WORDS[0]}" != "source" ]]; then + local cur opts base words + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + if declare -F _init_completion >/dev/null 2>&1; then + _init_completion -n "=:" || return + else + _cli_init_completion -n "=:" || return + fi + words=("${words[@]:0:$cword}") + if [[ "$cur" == "-"* ]]; then + requestComp="${words[*]} ${cur} --generate-bash-completion" + else + requestComp="${words[*]} --generate-bash-completion" + fi + opts=$(eval "${requestComp}" 2>/dev/null) + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + return 0 + fi +} + +complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete $PROG +unset PROG diff --git a/rpms/k8up/resources/completions/k8up.fish b/rpms/k8up/resources/completions/k8up.fish new file mode 100644 index 0000000..496b413 --- /dev/null +++ b/rpms/k8up/resources/completions/k8up.fish @@ -0,0 +1,11 @@ +function __k8up_complete + set -l words (commandline -opc) + set -l cur (commandline -ct) + if string match -q -- '-*' $cur + $words $cur --generate-bash-completion 2>/dev/null + else + $words --generate-bash-completion 2>/dev/null + end +end + +complete -c k8up -f -a '(__k8up_complete)' diff --git a/rpms/k8up/resources/nfpm.yaml b/rpms/k8up/resources/nfpm.yaml new file mode 100644 index 0000000..5d725b5 --- /dev/null +++ b/rpms/k8up/resources/nfpm.yaml @@ -0,0 +1,48 @@ +# nfpm.yaml + +name: ${PACKAGE_NAME} +version: ${PACKAGE_VERSION} +release: ${PACKAGE_RELEASE} +arch: ${PACKAGE_ARCH} +platform: ${PACKAGE_PLATFORM} +section: default +priority: extra +description: "${PACKAGE_DESCRIPTION}" + +maintainer: ${PACKAGE_MAINTAINER} +homepage: ${PACKAGE_HOMEPAGE} +license: ${PACKAGE_LICENSE} + +disable_globbing: false + +replaces: + - k8up + +provides: + - k8up + +contents: + - src: /app/k8up + dst: /usr/bin/k8up + file_info: + mode: 0755 + owner: root + group: root + - src: /app/resources/completions/k8up + dst: /usr/share/bash-completion/completions/k8up + file_info: + mode: 0644 + owner: root + group: root + - src: /app/resources/completions/_k8up + dst: /usr/share/zsh/site-functions/_k8up + file_info: + mode: 0644 + owner: root + group: root + - src: /app/resources/completions/k8up.fish + dst: /usr/share/fish/vendor_completions.d/k8up.fish + file_info: + mode: 0644 + owner: root + group: root -- 2.47.3