56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Simple guard to check input args
 | 
						|
[[ $# -eq 1 ]] || [[ $# -eq 2 ]] || {
 | 
						|
    >&2 echo "Usage: ./build IMAGE [ACTION]"
 | 
						|
    exit 1
 | 
						|
}
 | 
						|
 | 
						|
# Extract current version from Cargo.toml & get current branch
 | 
						|
patch_version="$(grep -Po '(?<=version = ").*(?=")' Cargo.toml | head -n1)"
 | 
						|
major_version="$(echo "$patch_version" | 
 | 
						|
    sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+)/\1/')"
 | 
						|
minor_version="$(echo "$patch_version" |
 | 
						|
    sed -E 's/([0-9]+).([0-9]+).([0-9]+)/\1.\2/')"
 | 
						|
branch="$(git branch --show-current)"
 | 
						|
 | 
						|
if [[ "$branch" = "master" ]]; then
 | 
						|
    tags=("$patch_version" "$minor_version" "$major_version" "latest")
 | 
						|
 | 
						|
elif [[ "$branch" = "develop" ]]; then
 | 
						|
    tags=("$patch_version-dev" "$minor_version-dev" "$major_version-dev" "dev")
 | 
						|
 | 
						|
else
 | 
						|
    tags=("$branch")
 | 
						|
 | 
						|
fi
 | 
						|
 | 
						|
# Run the actual build command
 | 
						|
DOCKER_BUILDKIT=1 docker build -t "$1:$tags" .
 | 
						|
 | 
						|
if [[ "$2" = push ]]; then
 | 
						|
    [[ "$branch" =~ ^develop|master$ ]] || {
 | 
						|
        >&2 echo "You can only push from develop or master."
 | 
						|
        exit 2
 | 
						|
    }
 | 
						|
 | 
						|
    for tag in "${tags[@]}"; do
 | 
						|
        # Create the tag
 | 
						|
        docker tag "$1:$tags" "$1:$tag"
 | 
						|
 | 
						|
        # Push the tag
 | 
						|
        docker push "$1:$tag"
 | 
						|
 | 
						|
        # Remove the tag again, if it's not the main tag
 | 
						|
        [[ "$tag" != "$tags" ]] && docker rmi "$1:$tag"
 | 
						|
    done
 | 
						|
 | 
						|
 elif [[ "$2" = run ]]; then
 | 
						|
    docker run \
 | 
						|
        --rm \
 | 
						|
        --interactive \
 | 
						|
        --tty \
 | 
						|
        --publish 8000:8000 \
 | 
						|
        "$1:$tags"
 | 
						|
fi
 |