Add abra cp command to push & pull files
				
					
				
			This commit is contained in:
		
							
								
								
									
										34
									
								
								abra
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								abra
									
									
									
									
									
								
							@ -52,11 +52,12 @@ sub_help() {
 | 
			
		||||
	echo "Usage: $PROGRAM_NAME [-a STACK_NAME] <subcommand> [options]"
 | 
			
		||||
	echo ""
 | 
			
		||||
	echo "Subcommands:"
 | 
			
		||||
	echo "    cp SRC_PATH SERVICE:DEST_PATH         copy files to a container"
 | 
			
		||||
	echo "    deploy [COMPOSE_FILE]                 let 'em rip"
 | 
			
		||||
	echo "    logs SERVICE [ARGS]                   tail logs from a deployed service"
 | 
			
		||||
	echo "    run SERVICE CMD                       run a command in the specified service's container"
 | 
			
		||||
	echo "    run_args SERVICE ARGS CMD             run, passing extra args to docker exec"
 | 
			
		||||
	echo "    secret_generate SECRET VERSION [CMD]  generate a secret, store it in pass & as a Docker secret"
 | 
			
		||||
	echo "    deploy [COMPOSE_FILE]                 let 'em rip"
 | 
			
		||||
	echo "    logs SERVICE [ARGS]                   tail logs from a deployed service"
 | 
			
		||||
	echo "    ... (custom commands)"
 | 
			
		||||
	echo ""
 | 
			
		||||
	echo "Make sure \$STACK_NAME is set using direnv or -a"
 | 
			
		||||
@ -159,6 +160,35 @@ sub_logs (){
 | 
			
		||||
	docker service logs "${STACK_NAME}_${SERVICE}" $LOGS_ARGS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub_cp() {
 | 
			
		||||
	SOURCE=$1
 | 
			
		||||
	DEST=$2
 | 
			
		||||
 | 
			
		||||
	SERVICE=$(echo "$SOURCE" | grep -o '^[^:]\+:' || echo "$DEST" | grep -o '^[^:]\+:')
 | 
			
		||||
	SERVICE=$(echo $SERVICE | tr -d ':')
 | 
			
		||||
 | 
			
		||||
	if [ -z $SERVICE ]; then
 | 
			
		||||
		echo "$(tput setaf 1)ERROR: Can't find SERVICE in either SRC or DEST$(tput sgr0)"
 | 
			
		||||
		echo ""
 | 
			
		||||
		echo "Usage: $PROGRAM_NAME cp SERVICE:SRC_PATH DEST_PATH"
 | 
			
		||||
		echo "       $PROGRAM_NAME cp SRC_PATH SERVICE:DEST_PATH"
 | 
			
		||||
		exit
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	CONTAINER=$(docker container ls --format "table {{.ID}},{{.Names}}" \
 | 
			
		||||
		| grep "${STACK_NAME}_${SERVICE}" | cut -d',' -f1)
 | 
			
		||||
 | 
			
		||||
	if [ -z $CONTAINER ]; then
 | 
			
		||||
		echo "$(tput setaf 1)ERROR: Can't find a ${STACK_NAME}_${SERVICE}$(tput sgr0)"
 | 
			
		||||
		exit
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	CP_ARGS=$(echo "$SOURCE $DEST" | sed "s/$SERVICE/$CONTAINER/")
 | 
			
		||||
 | 
			
		||||
	# shellcheck disable=SC2086
 | 
			
		||||
	docker cp $CP_ARGS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
subcommand=$1
 | 
			
		||||
case $subcommand in
 | 
			
		||||
	"" | "-h" | "--help")
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user