#!/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" show_cursor() { tput cnorm exit 1 } hide_cursor() { tput civis } trap show_cursor INT TERM hide_cursor ## 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" show_cursor 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 } check_for_pkg() { pkg=$(find ./ -type f -name "*.pkg.tar.zst") if [ ! -z "$pkg" ]; then : else echo -e "\b$color_error no packges found." echo -e "\b\tPlease run this script from inside the directory" echo -e "\b\twhich holds the Arch-packages." echo -e "\b$color_ok Exiting now." show_cursor fi } upload_package() { for file in ./*; do if [[ "$file" != *.pkg.tar.zst ]]; then : 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 "\n\b$color_ok packges uploaded" } check_for_pkg upload_package & show_progress $! show_cursor