dk: support build args avec la syntaxe NAME=VALUE

This commit is contained in:
Jephté Clain 2020-03-31 23:38:53 +04:00
parent f7b3f90ba0
commit aa269661cb
1 changed files with 50 additions and 24 deletions

74
dk
View File

@ -23,8 +23,8 @@ veut dire qu'elle n'aura pas la même sématique.
COMMANDES COMMANDES
get-profile get-profile
Afficher le profil courant Afficher le profil courant
b|build [SERVICE] b|build [NAME=VALUE...] [SERVICE]
Construire les images Construire les images. Les variables NAME=VALUE sont des 'build args'
p|push p|push
p|push [SERVICES...] p|push [SERVICES...]
La première syntaxe est utilisable avec un projet docker. Elle permet de La première syntaxe est utilisable avec un projet docker. Elle permet de
@ -56,31 +56,31 @@ COMMANDES
x|exec SERVICE COMMAND x|exec SERVICE COMMAND
Lancer une commande dans le container correspondant au service spécifié, Lancer une commande dans le container correspondant au service spécifié,
qui doit être en fonctionnement qui doit être en fonctionnement
d|brd d|brd [NAME=VALUE...]
Construire les images (comme avec build), démarrer les services et Construire les images (comme avec build), démarrer les services et
suivre les logs de façon interactive (comme avec up). Dès que l'on suivre les logs de façon interactive (comme avec up). Dès que l'on
arrête l'affichage des logs avec Ctrl+C, arrêter les services et arrête l'affichage des logs avec Ctrl+C, arrêter les services et
supprimer l'environnement (comme avec down) supprimer l'environnement (comme avec down)
Vaguement équivalent à -- build -- start [args] -- logs Vaguement équivalent à -- build -- start [args] -- logs
suivi de -- down suivi de -- down
bs bs [NAME=VALUE...]
Construire les images (comme avec build) puis démarrer les services Construire les images (comme avec build) puis démarrer les services
(comme avec start) (comme avec start)
Equivalent à -- build -- start [args] Equivalent à -- build -- start [args]
br SERVICE [COMMAND] br [NAME=VALUE...] SERVICE [COMMAND]
Construire les images (comme avec build) puis démarrer le service avec Construire les images (comme avec build) puis démarrer le service avec
la commande spécifiée (comme avec run) la commande spécifiée (comme avec run)
Equivalent à -- build -- run [args] Equivalent à -- build [NAME=VALUE...] -- run [args]
y|deploy [args...] y|deploy [args...]
(Re)déployer un stack. Cette commande ne fonctionne qu'en mode swarm. (Re)déployer un stack. Cette commande ne fonctionne qu'en mode swarm.
Implique --stack Implique --stack
by|bd [args...] by|bd [NAME=VALUE...] [args...]
Equivalent à --stack -- build -- deploy args... Equivalent à --stack -- build [NAME=VALUE...] -- deploy args...
Utilisable notamment en développement Utilisable notamment en développement
bp [args...] bp [NAME=VALUE...] [args...]
Equivalent à --stack -- build -- push args... Equivalent à --stack -- build [NAME=VALUE...] -- push args...
bpy|bpd [args...] bpy|bpd [NAME=VALUE...] [args...]
Equivalent à --stack -- build -- push -- deploy args... Equivalent à --stack -- build [NAME=VALUE...] -- push -- deploy args...
ser|service COMMAND SERVICE [args...] ser|service COMMAND SERVICE [args...]
Frontend pour 'docker service COMMAND args... SERVICE' Frontend pour 'docker service COMMAND args... SERVICE'
Cette commande ne fonctionne qu'en mode swarm. Il n'est pas nécessaire Cette commande ne fonctionne qu'en mode swarm. Il n'est pas nécessaire
@ -840,11 +840,11 @@ function default_update_build_env() {
[ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_version)" [ -n "$VERSION" ] || docker_add_build_arg VERSION "$(get_version)"
[ -n "$VERSION" ] && TAGS+=("$VERSION") [ -n "$VERSION" ] && TAGS+=("$VERSION")
# Variables en ligne de commande # Variables en ligne de commande
for var in "${VARS[@]}"; do for var in "${VARS[@]}" "$@"; do
docker_add_build_arg "${var%%=*}" "${var#*=}" docker_add_build_arg "${var%%=*}" "${var#*=}"
done done
} }
function update_build_env() { default_update_build_env; } function update_build_env() { default_update_build_env "$@"; }
function default_compose_build() { function default_compose_build() {
${FAKE:+qvals} docker-compose \ ${FAKE:+qvals} docker-compose \
@ -873,24 +873,42 @@ function docker_build() {
[ -n "$BUILD_BUILD" ] || return 0 [ -n "$BUILD_BUILD" ] || return 0
default_docker_build "$@" default_docker_build "$@"
} }
function __parse_bargs() {
bargs=()
args=()
while [ $# -gt 0 ]; do
[[ "$1" == *=* ]] && bargs+=("$1") || args+=("$1")
shift
done
}
function auto_build() { function auto_build() {
local -a replace_env_args env_args local -a replace_env_args env_args
local -a replace_build_args build_args local -a replace_build_args build_args
initialize_build_env initialize_build_env
local -a args bargs; local barg
__parse_bargs "$@"
set -- "${args[@]}"
if [ -f docker-compose.yml ]; then if [ -f docker-compose.yml ]; then
compose_set_env_args compose_set_env_args
update_build_env update_build_env "${bargs[@]}"
build_update_apps || return 1 build_update_apps || return 1
compose_build "$@" compose_build "$@"
elif [ -f Dockerfile ]; then elif [ -f Dockerfile ]; then
docker_parse_env_args docker_parse_env_args
docker_check_name docker_check_name
docker_add_build_arg build_date "$(date +%y%m%d)" docker_add_build_arg build_date "$(date +%y%m%d)"
update_build_env update_build_env "${bargs[@]}"
build_update_apps || return 1 build_update_apps || return 1
docker_build "$@" docker_build "$@"
else else
${FAKE:+qvals} "$DOCKER" build ${NO_CACHE:+--no-cache} "$@" for barg in "${bargs[@]}"; do
replace_build_args+=(--build-arg "$barg")
done
${FAKE:+qvals} "$DOCKER" build \
${NO_CACHE:+--no-cache} \
"${replace_build_args[@]}" "$@"
fi fi
} }
@ -1078,7 +1096,7 @@ function compose_run() { default_compose_run "$@"; }
function docker_run() { default_docker_run "$@"; } function docker_run() { default_docker_run "$@"; }
function auto_run() { function auto_run() {
eval "$(utools_local parse_opts)" eval "$(utools_local parse_opts)"
local detach no_deps rm=1 service_ports use_aliases volume local detach no_deps rm=1 service_ports use_aliases volume disable_tty
local -a envs labels local -a envs labels
local var local var
for var in "${VARS[@]}"; do for var in "${VARS[@]}"; do
@ -1096,6 +1114,7 @@ function auto_run() {
--service-ports service_ports=1 --service-ports service_ports=1
--use-aliases use_aliases=1 --use-aliases use_aliases=1
-v:,--volume: volume= -v:,--volume: volume=
-T disable_tty=1
@ args -- "$@" @ args -- "$@"
) )
parse_opts "${args[@]}" && set -- "${args[@]}" || { eerror "$args"; return 1; } parse_opts "${args[@]}" && set -- "${args[@]}" || { eerror "$args"; return 1; }
@ -1114,6 +1133,7 @@ function auto_run() {
${service_ports:+--service-ports} ${service_ports:+--service-ports}
${use_aliases:+--use-aliases} ${use_aliases:+--use-aliases}
${volume:+-v "$volume"} ${volume:+-v "$volume"}
${disable_tty:+-T}
) )
compose_run "$@" compose_run "$@"
elif [ -f Dockerfile ]; then elif [ -f Dockerfile ]; then
@ -1840,7 +1860,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
if auto_build; then __parse_bargs "${args[@]}"
if auto_build "${bargs[@]}"; then
auto_up "${args[@]}" && auto_logs || die auto_up "${args[@]}" && auto_logs || die
else else
do_auto_down= do_auto_down=
@ -1856,7 +1877,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_up "${args[@]}" __parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_up "${args[@]}" || die
;; ;;
br) br)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1868,7 +1890,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_run "${args[@]}" __parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_run "${args[@]}" || die
;; ;;
y|deploy) y|deploy)
USE_STACK=1 USE_STACK=1
@ -1889,7 +1912,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_deploy "${args[@]}" __parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_deploy "${args[@]}" || die
;; ;;
bp) bp)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1900,7 +1924,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_push "${args[@]}" __parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_push "${args[@]}" || die
;; ;;
bpy|bpd) bpy|bpd)
build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch" build_set_options "$update_apps_mode" "$update_apps_origin" "$update_apps_branch"
@ -1911,7 +1936,8 @@ while [ $# -gt 0 ]; do
args+=("$1"); shift args+=("$1"); shift
done done
enote "Profil $PROFILE" enote "Profil $PROFILE"
auto_build && auto_push && auto_deploy "${args[@]}" __parse_bargs "${args[@]}"
auto_build "${bargs[@]}" && auto_push && auto_deploy "${args[@]}" || die
;; ;;
ser|service) ser|service)
args=() args=()