#!/usr/bin/env bash # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # what: curae is latin an means to take care. this script takes care # of the system (adjusted for arch linux). # author: fk # started: may 2024 # # nifty: https://github.com/dylanaraps/pure-bash-bible # # requires: tree, wget # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ############################################################################# # # WARNING: EXAMINE THE CONTENT BEFORE EXECUTION. RUN AT YOUR OWN RISK. # ############################################################################# echo "<< curae.sh >>" base_url=https://git.mz.fo/fro/lnx-arch/raw/branch/master scripts_url=${base_url}/scripts home_dir=/home/.curae this_file=curae.sh if [ "$EUID" -ne 0 ] then echo "error: run as 'root'" exit fi this_file_name=`basename "$0"` if [ $# -lt 1 ]; then echo "usage: '$this_file_name { dots | uf / upd-full [host] | sw / software {setup/install} [host] | us / upd-self | wp }'" exit 1 fi operation=$1 parameter_1=$2 parameter_2=$3 shopt -s extglob case $operation in !(dots|uf|upd-full|sw|software|us|upd-self|wp)) echo "error: unknown operation '$operation'" exit ;; esac shopt -u extglob # ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ # helper function execute_script() { file=$1 parameter_1=$2 parameter_2=$3 echo "execute: ${file} ${parameter_1} ${parameter_2}" wget -q ${scripts_url}/${file} -O /tmp/${file} chmod 755 /tmp/*.sh /tmp/${file} ${parameter_1} ${parameter_2} } # ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ # update dot files shopt -s extglob if [ $operation == "dots" ] ; then execute_script 99_deploy.sh dots fi shopt -u extglob # install software (update system) shopt -s extglob if [ $operation == "sw" ] || [ $operation == "software" ] ; then if [ -z "${parameter_2}" ]; then parameter_2=$HOSTNAME fi execute_script 99_software.sh ${parameter_1} ${parameter_2} fi shopt -u extglob # self update, by re-downloading and overwriting itself shopt -s extglob if [ $operation == "us" ] || [ $operation == "upd-self" ] ; then wget -v ${base_url}/scripts/${this_file} -O ${home_dir}/${this_file}.tmp cp ${home_dir}/${this_file}.tmp ${home_dir}/${this_file} rm ${home_dir}/${this_file}.tmp chmod 755 ${home_dir}/*.sh fi shopt -u extglob # full update: install software and update dots shopt -s extglob if [ $operation == "uf" ] || [ $operation == "upd-full" ] ; then if [ -z "${parameter_1}" ]; then parameter_1=$HOSTNAME fi if [ -z "${parameter_1}" ]; then echo "error: missing host name" exit 1 fi ${home_dir}/${this_file} software setup ${parameter_1} ${home_dir}/${this_file} dots fi shopt -u extglob # update wallpapers shopt -s extglob if [ $operation == "wp" ] ; then execute_script 99_deploy.sh wp fi shopt -u extglob