diff --git a/.gitignore b/.gitignore index 0a178c9..f597ddc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ !LICENSE !qt6-rebuild !REUSE.toml +!upload-to-forgejo-repo diff --git a/upload-to-forgejo-repo b/upload-to-forgejo-repo new file mode 100755 index 0000000..95f66b2 --- /dev/null +++ b/upload-to-forgejo-repo @@ -0,0 +1,87 @@ +#!/bin/bash + +# SPDX-License-Identifier: 0BSD +# SPDX-FileCopyrightText: 2025 Christian Schendel + +set -euo pipefail +color_note="\e[1;36m==>\e[0m" +color_ok="\e[1;32m==>\e[0m" +color_error="\e[1;31m==>\e[0m" +color_warning="\e[1;35m==>\e[0m" + +## check for config file +if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/upload-to-dalci-repo.cfg" ]]; then + configfile="${XDG_CONFIG_HOME:-$HOME/.config}/upload-to-dalci-repo.cfg" + configfile_secured="${TMPDIR:-/tmp}/tmp.upload-to-dalci-repo.cfg" +else + echo -e "\b$color_error no configuration found" + cat > "${XDG_CONFIG_HOME:-$HOME/.config}/upload-to-dalci-repo.cfg" << EOF +forgejo_repo_url="https://{domain}/api/packages/{owner}/arch/{group}" +forgejo_user="your_username" +forgejo_token="your_token_or_password" + +EOF + echo -e "\b$color_note example configuration created at" + echo -e "\b$color_note ${XDG_CONFIG_HOME:-$HOME/.config}/upload-to-dalci-repo.cfg" + echo -e "\b$color_warning please edit it before running this script again" + + exit 1 +fi + +# secure the config file +rm -f "$configfile_secured" +while IFS= read -r line; do + printf '%s\n' \ + "$(sed -E "s/^(\s)?+(#.+$|[a-zA-Z0-9_]+=['\"]?[a-zA-Z0-9_~\.\`-]+['\"]).+$/\2/g" <<< "$line")" \ + >> "$configfile_secured" + configfile=$configfile_secured +done </dev/null; do + i=$(((i + 1) % 4)) + spinner="${spin:$i:1}" + printf '\b%s' "$spinner" + sleep .1 + done +} + +upload_package() { + for file in ./*; do + if [[ "$file" != *.pkg.tar.zst ]]; then + echo -e "\b$color_error No arch packages found" + exit 1 + else + echo -e "\b$color_note uploading $file" + # shellcheck disable=SC2154 + curl -X PUT "$forgejo_repo_url" \ + --user "${forgejo_user}:${forgejo_token}" \ + --header "Content-Type: application/octet-stream" \ + --data-binary "@$file" + fi + done + echo -e "\b$color_ok packges uploaded" +} + +upload_package & show_progress $! +show_cursor