#!/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_progress() { pid=$1 spin='—\|/' i=0 while kill -0 "$pid" 2>/dev/null; do i=$(((i + 1) % 4)) spinner="${spin:$i:1}" printf '\b%s' "$spinner" sleep .1 done } show_cursor() { tput cnorm } hide_cursor() { tput civis } trap show_cursor INT TERM hide_cursor configfile="${XDG_CONFIG_HOME:-$HOME/.config}/upload-to-dalci-repo.cfg" ## check for config file if [[ -r "$configfile" ]]; then configfile_secured="${TMPDIR:-/tmp}/tmp.upload-to-dalci-repo.cfg" else echo -e "\b$color_error no configuration found" cat > "$configfile" << 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 exit 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 <