add --git sync option
This commit is contained in:
@@ -21,6 +21,7 @@ SSH_OPTS="-o StrictHostKeyChecking=accept-new"
|
||||
# Parse command line arguments
|
||||
SFTP_ONLY=false
|
||||
FILES_ONLY=false
|
||||
GIT_ONLY=false
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
@@ -36,6 +37,10 @@ for arg in "$@"; do
|
||||
FILES_ONLY=true
|
||||
echo -e "${YELLOW}Files only mode enabled${NC}"
|
||||
;;
|
||||
--git)
|
||||
GIT_ONLY=true
|
||||
echo -e "${YELLOW}Git clone mode enabled${NC}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@@ -99,6 +104,69 @@ if [ -z "$LOCAL_FOLDER" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Git clone mode - clone repository and setup lazygit
|
||||
if [ "$GIT_ONLY" = true ]; then
|
||||
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
|
||||
fi
|
||||
|
||||
# Sync terminal info on full sync (no flags)
|
||||
if [ "$SFTP_ONLY" = false ] && [ "$FILES_ONLY" = false ]; then
|
||||
# Detect terminal type
|
||||
|
||||
Reference in New Issue
Block a user