initial code commit

This commit is contained in:
ION606
2024-06-26 12:03:29 -04:00
parent e810bb8215
commit ce895bddaa
10 changed files with 199 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
.ionvcs
+23 -1
View File
@@ -1 +1,23 @@
# VCS
# My remote sourcing system
## Running
## Option 1: The Script
just use `curl -fsSL -o ivcs.sh https://github.com/ION606/VCS/raw/main/setup.sh && chmod +x ivcs.sh && sudo ./ivcs.sh`
## Option 2: Maually
1. install `sshpass ssh pv` using your package manager
2. clone `https://github.com/ION606/VCS.git`
3. move `ionsrc.desktop` to wherever your system stores .desktop files
4. move the rest of the files to `~/ionsrc/`
## Commands
format: `ionvcs <command> [args]`
| Command | Args | Description |
|----------|-------------|---------------------------------|
| clone | \<repo-url> | Clone a repository. |
| user | \<username> | Get user information. |
| init | N/A | Initialize a repository. |
| login | N/A | Login to the system. |
| push | [-f] | Push changes to the repository. |
+45
View File
@@ -0,0 +1,45 @@
#!/bin/bash
# Navigate to the current working directory
cd "$PWD"
mkdir -p .ionvcs
# Check if a path is provided as an argument
if [ -z "$1" ]; then
echo "please provide a path to clone (like ~/Desktop/code_here)"
exit 1
fi
# Set the destination folder
if [ -n "$2" ]; then
DEST_FOLDER="$PWD/$2"
else
DEST_FOLDER="$PWD"
fi
# Create the destination folder if it doesn't exist
mkdir -p "$DEST_FOLDER"
# Source the credentials file if it exists
if [ -f "$HOME/ionsrc/creds.txt" ]; then
source "$HOME/ionsrc/creds.txt"
else
echo "credentials file not found! (please use the login command)"
exit 1
fi
# Set the remote path for rsync
REMOTE_PATH="$username@$src:$1"
CONF_FILE="$PWD/.ionvcs/src.config"
# Write configuration details to the .ionvcs/src.config file
echo "csrc=$REMOTE_PATH" > "$CONF_FILE"
echo "lastdate=$(date)" >> "$CONF_FILE"
echo "user=$username" >> "$CONF_FILE"
chmod 600 "$CONF_FILE"
# Use rsync with sshpass to copy files with a progress bar
echo -n "cloning "
/usr/bin/sshpass -p "$password" rsync -a --info=progress2 --no-i-r -h -e ssh "$REMOTE_PATH" "$DEST_FOLDER" || { echo "failed to clone!"; exit 1; }
echo "done!"
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
if [ -f "$HOME/ionsrc/creds.txt" ]; then
source "$HOME/ionsrc/creds.txt"
echo "logged in as $username!"
else
echo "no user found!"
fi
+11
View File
@@ -0,0 +1,11 @@
#!/bin/bash
echo "Usage: ionvcs <command> [args]"
echo
printf "%-15s %-20s %-30s\n" "Command" "Args" "Description"
printf "%-15s %-20s %-30s\n" "-------" "-----" "-----------"
printf "%-15s %-20s %-30s\n" "clone" "<repo-url>" "Clone a repository."
printf "%-15s %-20s %-30s\n" "user" "<username>" "Get user information."
printf "%-15s %-20s %-30s\n" "init" "N/A" "Initialize a repository."
printf "%-15s %-20s %-30s\n" "login" "N/A" "Login to the system."
printf "%-15s %-20s %-30s\n" "push" "[-f]" "Push changes to the repository."
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
# make sure the libraries are installed
sudo dnf -y install sshpass ssh pv || sudo apt-get -y install sshpass ssh pv
git clone https://github.com/ION606/VCS.git .ionvcs
sudo mv .ionvcs/ionsrc.desktop /usr/share/applications/ionsrc.desktop || echo "FAILED TO MAKE DESKTOP FOLDER"
mkdir -p ~/ionsrc
mv .ionvcs/* ~/ionsrc/
+9
View File
@@ -0,0 +1,9 @@
[Desktop Entry]
Version=1.0
Name=ION VCS
Comment=A custom utility to fetch and send code to my server
Exec=~/ionsrc/run.sh
Icon=~/ionsrc/icon.png
Terminal=true
Type=Application
Categories=Utility;
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
CREDSFILE="$HOME/ionsrc/creds.txt"
read -p "Enter source IP/URL: " src;
read -p "Enter your username: " username;
read -sp "Enter your password: " password;
echo "";
echo "src=$src" > "$CREDSFILE";
echo "username=$username" >> "$CREDSFILE";
echo "password=$password" >> "$CREDSFILE";
# Secure the file
chmod 600 "$CREDSFILE";
echo "Logged in!";
exit;
+43
View File
@@ -0,0 +1,43 @@
#!/bin/bash
# Navigate to the current working directory
cd "$PWD"
if [ ! -f "$HOME/ionsrc/creds.txt" ]; then
echo "credentials file not found!"
exit 1
elif [ ! -f "$PWD/.ionvcs/src.config"]; then
echo "config file not found!"
exit 1
fi
source "$HOME/ionsrc/creds.txt"
source "$PWD/.ionvcs/src.config"
# Set the remote path for rsync
REMOTE_PATH="$csrc"
while getopts ":of" opt; do
case $opt in
f)
force_flag=true
;;
esac
done
# 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")
# Check if there are differences
if [ ! -z "$DIFF_OUTPUT" && ! $force_flag ]; then
echo "conflicts found between the local and remote directories (make sure they're correct and re-run using the -f flag):"
echo "$DIFF_OUTPUT"
exit 1;
fi
# Use rsync with sshpass to copy files with a progress bar
echo -n "cloning..."
/usr/bin/sshpass -p "$password" rsync -avcn --exclude-from="$PWD/.ionign" --info=progress2 --no-i-r -h -e ssh "$DEST_FOLDER" "$REMOTE_PATH" || { echo "failed to clone!"; exit 1; }
echo "done!"
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
COMMAND="$1";
shift;
case $COMMAND in
"clone")
bash clone.sh "$@"
;;
"push")
bash push.sh "$@"
;;
"login")
bash login.sh "$@"
;;
"user")
bash getuser.sh
;;
"help")
bash help.sh
;;
*)
echo "UNKNOWN COMMAND \"$@\""
;;
esac