Compare commits

...

4 commits
1.3.0 ... main

Author SHA1 Message Date
Penelope Gwen
3dbe3a68d0 1.3.3 2024-12-10 15:10:14 -08:00
0de14df9d9 bug fix 2024-05-30 23:19:08 -06:00
e067a9c717 bug fix 2024-05-30 23:17:14 -06:00
52230660d6 bug fix 2024-05-30 23:08:22 -06:00
5 changed files with 52 additions and 34 deletions

18
debian/changelog vendored
View file

@ -1,3 +1,21 @@
sapphrc (1.3.3) unstable; urgency=medium
* synchronization now deletes files. be careful!
-- Penelope Gwen <support@pogmom.me> Tue, 10 Dec 2024 15:09:01 -0800
sapphrc (1.3.2) unstable; urgency=medium
* bug fixes
-- Penelope Gwen <support@pogmom.me> Thu, 30 May 2024 23:18:54 -0600
sapphrc (1.3.1) unstable; urgency=medium
* Fixed filelist logic
-- Penelope Gwen <support@pogmom.me> Thu, 30 May 2024 23:07:39 -0600
sapphrc (1.3.0) unstable; urgency=medium
* codebase overhaul

View file

@ -22,10 +22,10 @@ sapphrc_addfile(){
read -p "${bold}Add the listed files/directories to profile '${PROFILE_NAME}'?${normal} (Y/n)" yn
if ! [[ "${yn}" =~ ^([nN][oO]|[nN])$ ]];then
for e in ${filelist[@]};do
if grep -q ^"${e}"$ "${sapphrc_config}/backups/${PROFILE_NAME}/${inex}";then
if grep -q ^"${e}"$ "${sapphrc_config}/backups/${PROFILE_NAME}/${LIST}";then
echo "already in file"
else
echo $e|tee -a "${sapphrc_config}/backups/${PROFILE_NAME}/${inex}" >/dev/null
echo $e|tee -a "${sapphrc_config}/backups/${PROFILE_NAME}/${LIST}" >/dev/null
fi
done
fi
@ -37,7 +37,7 @@ sapphrc_rmfile(){
rmfiles+=("$i");i=$(($i+1))
rmfiles+=("$line")
rmfiles+=("$line")
done < "${sapphrc_config}/backups/${PROFILE_NAME}/${inex}"
done < "${sapphrc_config}/backups/${PROFILE_NAME}/${LIST}"
[ ${#rmfiles[@]} -eq 0 ] && echo "No files in list" && exit 1
choices=($(dialog --checklist --output-fd 1 "Select options:" 0 0 0 "${rmfiles[@]}"))
if [ $? -ne 0 ]; then
@ -48,8 +48,8 @@ sapphrc_rmfile(){
for choice in "${choices[@]}"; do
rmlines="${rmlines}$((${choice}+1))d;"
done
sed -i "${rmlines}" "${sapphrc_config}/backups/${PROFILE_NAME}/${inex}"
echo "Removed ${#choices[@]} paths from ${PROFILE_NAME} ${inex} list"
sed -i "${rmlines}" "${sapphrc_config}/backups/${PROFILE_NAME}/${LIST}"
echo "Removed ${#choices[@]} paths from ${PROFILE_NAME} ${LIST} list"
}
sapphrc_filelists(){
@ -77,7 +77,7 @@ sapphrc_filelists(){
done
validate_backupdir
validate_profile "${PROFILE}"
validate_profile "${PROFILE_NAME}"
case "${OPERATION}" in
add)

View file

@ -35,27 +35,27 @@ check_name(){
}
validate_profile(){
profile_name="${1}"
PROFILE_NAME="${1}"
first_check=true
while check_name "${profile_name}" "$first_check";do
while check_name "${PROFILE_NAME}" "$first_check";do
first_check=false
if [ "$COMMAND" == "create" ];then
read -p "Profile Name: " profile_name
read -p "Profile Name: " PROFILE_NAME
else
backups=( "${sapphrc_config}/backups/"* )
echo "$backups"
if [ -d "${backups[0]}" ];then
select d in $(ls "${sapphrc_config}/backups/");do test -n "$d" && break; echo ">>> Invalid Selection"; done
profile_name="$d"
PROFILE_NAME="$d"
else
echo "No backups exist!"
exit 1
fi
fi
done
sapphrc_profile="${sapphrc_config}/backups/${profile_name}"
sapphrc_profile="${sapphrc_config}/backups/${PROFILE_NAME}"
sapphrc_profile_rcdir="${sapphrc_profile}/home/.sapphrc"
sapphrc_profile_rc="${sapphrc_profile_rcdir}/${profile_name}"
sapphrc_profile_rc="${sapphrc_profile_rcdir}/${PROFILE_NAME}"
}
validate_backupdir(){

View file

@ -4,40 +4,40 @@ sapphrc_pcreate(){
mkdir -p "${sapphrc_profile_rcdir}"
touch "${sapphrc_profile}/"{include,exclude}
echo '#!/bin/bash'|tee "${sapphrc_profile_rc}" > /dev/null
echo ".sapphrc/${profile_name}"|tee "${sapphrc_profile}/include" > /dev/null
echo ".sapphrc/${PROFILE_NAME}"|tee "${sapphrc_profile}/include" > /dev/null
chmod +x "${sapphrc_profile_rc}"
echo "Successfully created '${profile_name}'"
join "${profile_name}"
echo "Successfully created '${PROFILE_NAME}'"
sapphrc_join "${PROFILE_NAME}"
}
sapphrc_premove(){
echo "WARNING: really remove profile '${profile_name}'?"
echo "WARNING: really remove profile '${PROFILE_NAME}'?"
echo "~${sapphrc_profile#$HOME} and all its contents will be deleted!"
read -p "Confirm removal (y/N): " confirm_remove
if [[ "${confirm_remove}" =~ ^([yY][eE][sS]|[yY])$ ]];then
leave
echo "removing '${profile_name}'"
sapphrc_pleave
echo "removing '${PROFILE_NAME}'"
rm -r "${sapphrc_profile}"
echo "Profile '${profile_name}' has been removed. Be sure to leave the profile on other machines/accounts to avoid synchronization issues."
echo "Profile '${PROFILE_NAME}' has been removed. Be sure to leave the profile on other machines/accounts to avoid synchronization issues."
fi
}
sapphrc_pjoin(){
if grep -q ^"${profile_name}"$ "${sapphrc_config}/active_profiles";then
echo "Already joined ${profile_name}, nothing to do."
if grep -q ^"${PROFILE_NAME}"$ "${sapphrc_config}/active_profiles";then
echo "Already joined ${PROFILE_NAME}, nothing to do."
else
echo "${profile_name}"|tee -a "${sapphrc_config}/active_profiles" > /dev/null
echo "Successfully joined '${profile_name}'!"
echo "${PROFILE_NAME}"|tee -a "${sapphrc_config}/active_profiles" > /dev/null
echo "Successfully joined '${PROFILE_NAME}'!"
fi
}
sapphrc_pleave(){
if grep -q ^"${profile_name}"$ "${sapphrc_config}/active_profiles";then
sed -i '/^'"${profile_name}"'$/d' "${sapphrc_config}/active_profiles"
[ -e "${HOME}/.sapphrc/${profile_name}" ] && rm "${HOME}/.sapphrc/${profile_name}"
echo "Successfully left '${profile_name}'!"
if grep -q ^"${PROFILE_NAME}"$ "${sapphrc_config}/active_profiles";then
sed -i '/^'"${PROFILE_NAME}"'$/d' "${sapphrc_config}/active_profiles"
[ -e "${HOME}/.sapphrc/${PROFILE_NAME}" ] && rm "${HOME}/.sapphrc/${PROFILE_NAME}"
echo "Successfully left '${PROFILE_NAME}'!"
else
echo "You have not joined '${profile_name}', nothing to do."
echo "You have not joined '${PROFILE_NAME}', nothing to do."
fi
}

View file

@ -4,19 +4,19 @@ sapphrc_rsync(){
echo ""
# validate_backupdir
sync_direction="$1"
cat "${sapphrc_config}/active_profiles" | while read profile_name
cat "${sapphrc_config}/active_profiles" | while read PROFILE_NAME
do
backup_homedir="$sapphrc_config/backups/${profile_name}/home"
include_list="$sapphrc_config/backups/${profile_name}/include"
exclude_list="$sapphrc_config/backups/${profile_name}/exclude"
backup_homedir="$sapphrc_config/backups/${PROFILE_NAME}/home"
include_list="$sapphrc_config/backups/${PROFILE_NAME}/include"
exclude_list="$sapphrc_config/backups/${PROFILE_NAME}/exclude"
case ${sync_direction} in
backup)
echo "backup"
rsync -arvSH --files-from="${include_list}" --exclude-from="${exclude_list}" --exclude '.config/sapphrc/' "${HOME}" "${backup_homedir}"
rsync -arvSH --files-from="${include_list}" --exclude-from="${exclude_list}" --exclude '.config/sapphrc/' "${HOME}" "${backup_homedir}" --delete
;;
restore)
echo "restore"
rsync -arvSH --files-from="${include_list}" --exclude-from="${exclude_list}" --exclude '.config/sapphrc/' "${backup_homedir}" "${HOME}"
rsync -arvSH --files-from="${include_list}" --exclude-from="${exclude_list}" --exclude '.config/sapphrc/' "${backup_homedir}" "${HOME}" --delete
;;
*)
echo "unknown sync direction"