71 lines
3.0 KiB
Bash
71 lines
3.0 KiB
Bash
#
|
|
# Docker
|
|
#
|
|
# Docker automates the repetitive tasks of setting up development environments
|
|
# Link: https://www.docker.com
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Configuration
|
|
# ------------------------------------------------------------------------------
|
|
|
|
SPACESHIP_DOCKER_SHOW="${SPACESHIP_DOCKER_SHOW=true}"
|
|
SPACESHIP_DOCKER_ASYNC="${SPACESHIP_DOCKER_ASYNC=true}"
|
|
SPACESHIP_DOCKER_PREFIX="${SPACESHIP_DOCKER_PREFIX="on "}"
|
|
SPACESHIP_DOCKER_SUFFIX="${SPACESHIP_DOCKER_SUFFIX="$SPACESHIP_PROMPT_DEFAULT_SUFFIX"}"
|
|
SPACESHIP_DOCKER_SYMBOL="${SPACESHIP_DOCKER_SYMBOL="🐳 "}"
|
|
SPACESHIP_DOCKER_COLOR="${SPACESHIP_DOCKER_COLOR="cyan"}"
|
|
SPACESHIP_DOCKER_VERBOSE="${SPACESHIP_DOCKER_VERBOSE=false}"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Dependencies
|
|
# ------------------------------------------------------------------------------
|
|
|
|
source "$SPACESHIP_ROOT/sections/docker_context.zsh"
|
|
spaceship::precompile "$SPACESHIP_ROOT/sections/docker_context.zsh"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Section
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Show current Docker version and connected machine
|
|
spaceship_docker() {
|
|
[[ $SPACESHIP_DOCKER_SHOW == false ]] && return
|
|
|
|
spaceship::exists docker || return
|
|
|
|
# Better support for docker environment vars: https://docs.docker.com/compose/reference/envvars/
|
|
if [[ -n "$COMPOSE_FILE" ]]; then
|
|
local compose_path
|
|
# Use COMPOSE_PATH_SEPARATOR or colon as default
|
|
local separator=${COMPOSE_PATH_SEPARATOR:-":"}
|
|
# COMPOSE_FILE may have several filenames separated by colon, upsearch all of them
|
|
local filenames=("${(@ps/$separator/)COMPOSE_FILE}")
|
|
local compose_path="$(spaceship::upsearch -s $filenames)"
|
|
|
|
# Must return if COMPOSE_FILE is present but invalid
|
|
[[ -n "$compose_path" ]] || return
|
|
fi
|
|
|
|
local docker_context="$(spaceship_docker_context)"
|
|
local docker_context_section="$(spaceship::section::render $docker_context)"
|
|
|
|
# Show Docker status only for Docker-specific folders or when connected to external host
|
|
local docker_project_globs=('Dockerfile' '.devcontainer/Dockerfile' 'docker-compose.y*ml')
|
|
local is_docker_project="$(spaceship::upsearch Dockerfile $docker_project_globs)"
|
|
[[ -n "$is_docker_project" || -f /.dockerenv || -n "$docker_context" ]] || return
|
|
|
|
# if docker daemon isn't running you'll get an error saying it can't connect
|
|
# Note: Declaration and assignment is separated for correctly getting the exit code
|
|
local docker_version=$(docker version -f "{{.Server.Version}}" 2>/dev/null)
|
|
[[ $? -ne 0 || -z $docker_version ]] && return
|
|
|
|
[[ $SPACESHIP_DOCKER_VERBOSE == false ]] && docker_version=${docker_version%-*}
|
|
|
|
spaceship::section \
|
|
--color "$SPACESHIP_DOCKER_COLOR" \
|
|
--prefix "$SPACESHIP_DOCKER_PREFIX" \
|
|
--suffix "$SPACESHIP_DOCKER_SUFFIX" \
|
|
--symbol "$SPACESHIP_DOCKER_SYMBOL" \
|
|
"v${docker_version}${docker_context_section}"
|
|
}
|