Compare commits
4 commits
Author | SHA1 | Date | |
---|---|---|---|
|
3dbe3a68d0 | ||
0de14df9d9 | |||
e067a9c717 | |||
52230660d6 |
5 changed files with 52 additions and 34 deletions
18
debian/changelog
vendored
18
debian/changelog
vendored
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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(){
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Reference in a new issue