#!/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