separate sync git script
This commit is contained in:
13
shared.sh
Normal file
13
shared.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Shared variables and configuration for sync scripts
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
YELLOW='\033[0;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# SSH options - auto-accept new host keys
|
||||||
|
SSH_OPTS="-o StrictHostKeyChecking=accept-new"
|
||||||
85
sync-git-project.sh
Normal file
85
sync-git-project.sh
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# This script is used to clone a project from a remote server
|
||||||
|
# and setup lazygit for remote git operations.
|
||||||
|
# Called by sync-project.sh with --git flag.
|
||||||
|
|
||||||
|
# Get current script real directory (follow symlinks)
|
||||||
|
SCRIPT_PATH="$(realpath "$0")"
|
||||||
|
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
|
||||||
|
|
||||||
|
# Source shared variables
|
||||||
|
source "$SCRIPT_DIR/shared.sh"
|
||||||
|
|
||||||
|
# Arguments: SERVER_HOST SSH_PASSWORD SERVER_PROJECT_PATH LOCAL_FOLDER
|
||||||
|
SERVER_HOST="$1"
|
||||||
|
SSH_PASSWORD="$2"
|
||||||
|
SERVER_PROJECT_PATH="$3"
|
||||||
|
LOCAL_FOLDER="$4"
|
||||||
|
|
||||||
|
# Validate arguments
|
||||||
|
if [ -z "$SERVER_HOST" ] || [ -z "$SSH_PASSWORD" ] || [ -z "$SERVER_PROJECT_PATH" ] || [ -z "$LOCAL_FOLDER" ]; then
|
||||||
|
echo -e "${RED}Usage: sync-git-project.sh SERVER_HOST SSH_PASSWORD SERVER_PROJECT_PATH LOCAL_FOLDER${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clone repository
|
||||||
|
echo "Cloning repository..."
|
||||||
|
GIT_SSH_COMMAND="sshpass -p '${SSH_PASSWORD}' ssh $SSH_OPTS" \
|
||||||
|
git clone ${SERVER_HOST}:${SERVER_PROJECT_PATH} "${LOCAL_FOLDER}"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED}Failed to clone repository${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}Repository cloned successfully${NC}"
|
||||||
|
|
||||||
|
# Extract username and host from SERVER_HOST
|
||||||
|
USERNAME="${SERVER_HOST%@*}"
|
||||||
|
HOST="${SERVER_HOST#*@}"
|
||||||
|
|
||||||
|
cd "${LOCAL_FOLDER}"
|
||||||
|
|
||||||
|
# Upload lazygit to server
|
||||||
|
echo "Uploading lazygit to server..."
|
||||||
|
sshpass -p "${SSH_PASSWORD}" scp $SSH_OPTS "${SCRIPT_DIR}/lazygit" ${SERVER_HOST}:${SERVER_PROJECT_PATH}
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED}Failed to upload lazygit${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}lazygit uploaded successfully${NC}"
|
||||||
|
|
||||||
|
# Mark lazygit as assume-unchanged on server
|
||||||
|
echo "Marking lazygit as assume-unchanged on server..."
|
||||||
|
sshpass -p "${SSH_PASSWORD}" ssh $SSH_OPTS ${SERVER_HOST} \
|
||||||
|
"cd ${SERVER_PROJECT_PATH} && git update-index --assume-unchanged lazygit"
|
||||||
|
|
||||||
|
# Pull to get lazygit locally, then mark as assume-unchanged
|
||||||
|
echo "Syncing and marking lazygit as assume-unchanged locally..."
|
||||||
|
GIT_SSH_COMMAND="sshpass -p '${SSH_PASSWORD}' ssh $SSH_OPTS" git pull
|
||||||
|
git update-index --assume-unchanged lazygit
|
||||||
|
|
||||||
|
echo -e "${GREEN}lazygit configured successfully${NC}"
|
||||||
|
|
||||||
|
# Generate ssh.sh script
|
||||||
|
echo "
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
SERVER_USER=\"${USERNAME}\"
|
||||||
|
SERVER_HOST=\"${HOST}\"
|
||||||
|
SERVER_PASSWORD=\"${SSH_PASSWORD}\"
|
||||||
|
SERVER_PATH=\"${SERVER_PROJECT_PATH}/\"
|
||||||
|
REMOTE_PROGRESS=\".remote-in-progress\"
|
||||||
|
" > "ssh.sh"
|
||||||
|
|
||||||
|
# Append the ssh.sh template
|
||||||
|
cat "${SCRIPT_DIR}/scripts/ssh.sh" >> "ssh.sh"
|
||||||
|
echo -e "${GREEN}ssh.sh created successfully${NC}"
|
||||||
|
|
||||||
|
echo -e "${GREEN}Git clone complete!${NC}"
|
||||||
|
exit 0
|
||||||
@@ -3,20 +3,14 @@
|
|||||||
# This script is used to sync a project from
|
# This script is used to sync a project from
|
||||||
# a remote server to a local machine.
|
# a remote server to a local machine.
|
||||||
|
|
||||||
# Colors for output
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
RED='\033[0;31m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
YELLOW='\033[0;33m'
|
|
||||||
NC='\033[0m' # No Color
|
|
||||||
|
|
||||||
# Get current script real directory (follow symlinks)
|
# Get current script real directory (follow symlinks)
|
||||||
SCRIPT_PATH="$(realpath "$0")"
|
SCRIPT_PATH="$(realpath "$0")"
|
||||||
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
|
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
|
||||||
ARCHIVE_NAME="sync.tar.gz"
|
|
||||||
|
|
||||||
# SSH options - auto-accept new host keys
|
# Source shared variables
|
||||||
SSH_OPTS="-o StrictHostKeyChecking=accept-new"
|
source "$SCRIPT_DIR/shared.sh"
|
||||||
|
|
||||||
|
ARCHIVE_NAME="sync.tar.gz"
|
||||||
|
|
||||||
# Parse command line arguments
|
# Parse command line arguments
|
||||||
SFTP_ONLY=false
|
SFTP_ONLY=false
|
||||||
@@ -104,67 +98,14 @@ if [ -z "$LOCAL_FOLDER" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Git clone mode - clone repository and setup lazygit
|
# Git clone mode - delegate to sync-git-project.sh
|
||||||
if [ "$GIT_ONLY" = true ]; then
|
if [ "$GIT_ONLY" = true ]; then
|
||||||
echo "Cloning repository..."
|
"$SCRIPT_DIR/sync-git-project.sh" \
|
||||||
GIT_SSH_COMMAND="sshpass -p '${SSH_PASSWORD}' ssh $SSH_OPTS" \
|
"$SERVER_HOST" \
|
||||||
git clone ${SERVER_HOST}:${SERVER_PROJECT_PATH} "${LOCAL_FOLDER}"
|
"$SSH_PASSWORD" \
|
||||||
|
"$SERVER_PROJECT_PATH" \
|
||||||
if [ $? -ne 0 ]; then
|
"$LOCAL_FOLDER"
|
||||||
echo -e "${RED}Failed to clone repository${NC}"
|
exit $?
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${GREEN}Repository cloned successfully${NC}"
|
|
||||||
|
|
||||||
# Extract username and host from SERVER_HOST
|
|
||||||
USERNAME="${SERVER_HOST%@*}"
|
|
||||||
HOST="${SERVER_HOST#*@}"
|
|
||||||
|
|
||||||
cd "${LOCAL_FOLDER}"
|
|
||||||
|
|
||||||
# Upload lazygit to server
|
|
||||||
echo "Uploading lazygit to server..."
|
|
||||||
sshpass -p "${SSH_PASSWORD}" scp $SSH_OPTS "${SCRIPT_DIR}/lazygit" ${SERVER_HOST}:${SERVER_PROJECT_PATH}
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${RED}Failed to upload lazygit${NC}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${GREEN}lazygit uploaded successfully${NC}"
|
|
||||||
|
|
||||||
# Mark lazygit as assume-unchanged on server
|
|
||||||
echo "Marking lazygit as assume-unchanged on server..."
|
|
||||||
sshpass -p "${SSH_PASSWORD}" ssh $SSH_OPTS ${SERVER_HOST} \
|
|
||||||
"cd ${SERVER_PROJECT_PATH} && git update-index --assume-unchanged lazygit"
|
|
||||||
|
|
||||||
# Pull to get lazygit locally, then mark as assume-unchanged
|
|
||||||
echo "Syncing and marking lazygit as assume-unchanged locally..."
|
|
||||||
GIT_SSH_COMMAND="sshpass -p '${SSH_PASSWORD}' ssh $SSH_OPTS" git pull
|
|
||||||
git update-index --assume-unchanged lazygit
|
|
||||||
|
|
||||||
echo -e "${GREEN}lazygit configured successfully${NC}"
|
|
||||||
|
|
||||||
# Generate ssh.sh script
|
|
||||||
echo "
|
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Configuration
|
|
||||||
SERVER_USER=\"${USERNAME}\"
|
|
||||||
SERVER_HOST=\"${HOST}\"
|
|
||||||
SERVER_PASSWORD=\"${SSH_PASSWORD}\"
|
|
||||||
SERVER_PATH=\"${SERVER_PROJECT_PATH}/\"
|
|
||||||
REMOTE_PROGRESS=\".remote-in-progress\"
|
|
||||||
" > "ssh.sh"
|
|
||||||
|
|
||||||
# Append the ssh.sh template
|
|
||||||
cat "${SCRIPT_DIR}/scripts/ssh.sh" >> "ssh.sh"
|
|
||||||
echo -e "${GREEN}ssh.sh created successfully${NC}"
|
|
||||||
|
|
||||||
echo -e "${GREEN}Git clone complete!${NC}"
|
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Sync terminal info on full sync (no flags)
|
# Sync terminal info on full sync (no flags)
|
||||||
|
|||||||
Reference in New Issue
Block a user