#!/usr/bin/env bash # ─< ANSI color codes >─────────────────────────────────────────────────────────────────── RED='\033[0;31m' CYAN='\033[0;36m' YELLOW='\033[0;33m' LIGHT_GREEN='\033[0;92m' BOLD='\033[1m' NC='\033[0m' # No Color echo_error() { printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2 } echo_info() { printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1" } echo_warning() { printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1" } echo_note() { printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$1" } # ─< Check if the given command exists silently >───────────────────────────────────────── command_exists() { command -v "$@" >/dev/null 2>&1 } gitUserSetup() { local g_username="server-agent" local g_mail="info@team-pieck.de" local g_branch="main" local g_domain="git.k4li.de" local CREDENTIALS_FILE="$HOME/.git-credentials" git config --global user.name "$g_username" git config --global user.email "$g_mail" git config --global init.defaultBranch "$g_branch" echo_note "Enter your authentication token:" read -r -s g_token # The '-s' flag hides input for privacy # Append the new credentials to the file echo "https://$g_username:$g_token@$g_domain" >>"$CREDENTIALS_FILE" echo "Credentials added for $g_domain in $CREDENTIALS_FILE" git config --global credential.helper store chmod 600 "$HOME/.git-credentials" } gitDirSetup() { cd /opt/docker || echo_error "could not cd /opt/docker" if ping -w2 10.255.255.1; then local location="hl" elif ping -w2 10.69.69.2; then location="vps" fi git init . git branch -m main git remote add "https://git.k4li.de/homelab/${location}-$(hostname).git" git commit -m "Initial script commit" git push -u origin main } set_cronjob() { # Configuration CRON_COMMAND="/opt/scripts/bash/setup/hlpush.sh" CRON_SCHEDULE="0 3,15 * * *" CRON_LOG="./cronjobs.log" CRON_ENTRY="$CRON_SCHEDULE $CRON_COMMAND >> $CRON_LOG 2>&1" # Check for existing entry EXISTING_ENTRIES=$(crontab -l 2>/dev/null) # Add entry if not exists if ! echo "$EXISTING_ENTRIES" | grep -qF "$CRON_ENTRY"; then # Create temporary cron file TMPFILE=$(mktemp) # Preserve existing entries [ -n "$EXISTING_ENTRIES" ] && echo "$EXISTING_ENTRIES" >"$TMPFILE" # Add header and new entry echo -e "\n# Daily 3AM/3PM job added $(date)" >>"$TMPFILE" echo "$CRON_ENTRY" >>"$TMPFILE" # Install new cron file crontab "$TMPFILE" rm -f "$TMPFILE" echo_info "Success: Cronjob installed" echo_note "Verify with: crontab -l" else echo_warning "Notice: Cronjob already exists" exit 0 fi } if ! command_exists git; then return 1 echo_error "You don't have git installed!" fi gitUserSetup if [[ -d /opt/docker/ ]]; then gitDirSetup [[ -d /opt/scripts/bash ]] && set_cronjob fi