Added scripts

This commit is contained in:
Daniel Fichtinger 2024-11-10 02:53:06 -05:00
parent 52fa79bd8d
commit 8ea9f8f1e9
3 changed files with 112 additions and 0 deletions

59
autoyadm.sh Executable file
View file

@ -0,0 +1,59 @@
#!/bin/bash
# This script reads tracked paths
# from a file and executes "yadm add"
# on all of them, then creates a timestamped
# commit and pushes the changes.
AYE="AutoYADM Error:"
AYM="AutoYADM:"
# We check not to overwrite the user's env setting
if [ -z "$VAR" ]; then
AUTOYADMPUSH=0
fi
# Set hostname explicitly because it
# may not be present in this shell environment
if [ -z "$HOST" ]; then
HOST="$(hostname)"
fi
# First we read each path from "tracked"
(while read -r path; do
# we disable ignored warning for this subshell
# Execute yadm add on each real file
# if the path points to a directory
# This ensures symlinks are not added
if [ -d "$path" ]; then
find "$path" -type f -exec yadm add {} +
# If just a file, we add directly
elif [ -f "$path" ]; then
yadm add "$path"
# If neither file nor dir, something is very wrong!
else
echo "$AYE Target must be a directory or a file!"
exit 1
fi
done) <"$HOME/.config/yadm/tracked"
# Define the location of the ssh-agent environment
sshenv="$HOME/.ssh/environment-$HOST"
if [[ -n $(yadm status --porcelain) ]]; then
yadm commit -m "AutoYADM commit: $(date +'%Y-%m-%d %H:%M:%S')"
# Check if the ssh-agent env exists
if [[ -f "$sshenv" ]]; then
if ((!AUTOYADMPUSH)); then
echo "$AYM Pushing disabled, aborting..."
exit 1
fi
# Directive to suppress shellcheck warning
# shellcheck source=/dev/null
source "$sshenv"
yadm push
else
echo "$AYE ssh-agent environment not found, aborting push..."
exit 1
fi
fi
echo "$AYM Push successful!"

16
tracked Normal file
View file

@ -0,0 +1,16 @@
/home/fic/.config/yadm
/home/fic/.config/nvim
/home/fic/.config/btop
/home/fic/.config/dunst
/home/fic/.config/i3
/home/fic/.config/kitty
/home/fic/.config/lazygit
/home/fic/.config/nushell
/home/fic/.config/polybar
/home/fic/.config/rofi
/home/fic/.config/tmux
/home/fic/.config/wal
/home/fic/.config/zathura
/home/fic/.config/starship.toml
/home/fic/.zshrc
/home/fic/.bashrc

37
yadmadd.sh Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
# This script takes file or directories as
# arguments and appends them to the "tracked"
# file, for use by autoyadm.sh
YADMDIR="$HOME/.config/yadm"
AYE="AutoYADM Error:"
AYM="AutoYADM:"
# We check if any arguments have been provided
if [ $# -eq 0 ]; then
echo "$AYE $0 <file_or_directory> [<file_or_directory> ...]"
exit 1
fi
# We loop through arguments
for arg in "$@"; do
# check if current arg is a real path
if [ ! -e "$arg" ]; then
echo "$AYE '$arg' is not a valid path."
continue
fi
# get its absolute path
abs=$(realpath "$arg")
# check if it's inside home dir
if [[ "$abs" == "$HOME"* ]]; then
# convert to path relative to ~
rel=${abs#"$HOME/"}
# append to tracked file
echo "$HOME/$rel" >>"$YADMDIR/tracked"
echo "$AYM Tracking $HOME/$rel"
else
echo "$AYM Path must be inside the home directory."
exit 1
fi
done