mirror of
https://github.com/ION606/VCS.git
synced 2026-05-14 22:16:55 +00:00
70 lines
1.7 KiB
Bash
70 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Navigate to the current working directory
|
|
cd "$PWD"
|
|
|
|
if [ ! -f "$HOME/ionsrc/creds.txt" ]; then
|
|
echo -e "\e[31mcredentials file not found!\e[0m"
|
|
exit 1
|
|
elif [ ! -f "$PWD/.ionvcs/src.config" ]; then
|
|
echo -e "\e[31mconfig file not found!\e[0m"
|
|
exit 1
|
|
fi
|
|
|
|
source "$HOME/ionsrc/creds.txt"
|
|
source "$PWD/.ionvcs/src.config"
|
|
|
|
REMOTE_PATH="$csrc"
|
|
|
|
# Set the destination folder
|
|
if [ -n "$2" ]; then
|
|
DEST_FOLDER="$PWD/$2"
|
|
else
|
|
DEST_FOLDER="$PWD"
|
|
fi
|
|
|
|
# Use rsync with sshpass to check for differences without copying
|
|
DIFF_OUTPUT=$(/usr/bin/sshpass -p "$password" rsync -avcn --delete -e ssh "$REMOTE_PATH" "$DEST_FOLDER") || echo "FAILED TO CONNECT TO SOURCE!"
|
|
|
|
# Check if there are differences
|
|
if [ ! -z "$DIFF_OUTPUT" ]; then
|
|
echo -e "\e[1;32mdifferences found\e[0m"
|
|
echo "$DIFF_OUTPUT"
|
|
else
|
|
echo "no changes found from remote"
|
|
fi
|
|
|
|
# Files
|
|
ogfiles=".ionvcs/ogfiles.config"
|
|
addfiles=".ionvcs/add.config"
|
|
|
|
# Check if the necessary files exist
|
|
if [ ! -f "$ogfiles" ]; then
|
|
echo "The file $ogfiles does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$addfiles" ]; then
|
|
echo "The file $addfiles does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# Read the .ionvcs/add.config into an array
|
|
mapfile -t add_files < "$addfiles"
|
|
mapfile -t all_files < "$ogfiles"
|
|
|
|
|
|
# Read the .ionvcs/ogfiles.config and process each line
|
|
while IFS= read -r file; do
|
|
if [ ! -f "$file" ]; then
|
|
# File is not in the current directory
|
|
echo -e "\e[0;31m$file\e[0m"
|
|
fi
|
|
done < "$ogfiles"
|
|
|
|
while IFS= read -r file; do
|
|
if ! (printf '%s\n' "${all_files[@]}" | grep -qx "$file"); then
|
|
# File is in .ionvcs/add.config
|
|
echo -e "\e[0;32m$file\e[0m"
|
|
fi
|
|
done < "$addfiles" |