ops: fix interactive prompts (printf to stderr, no subshell)

printf шёл в stdout внутри $(...), поэтому prompt не выводился
и read висел. Теперь prompt идёт в stderr напрямую.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 21:46:07 +03:00
parent 83d6ad5134
commit 0df89bdff0
2 changed files with 22 additions and 22 deletions

View File

@@ -16,14 +16,14 @@ command -v docker >/dev/null 2>&1 || { echo "error: docker not found in PATH" >&
DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev)
ask() { ask() {
prompt="$1"; default="$2" # $1 = variable name, $2 = prompt, $3 = default
if [ -n "$default" ]; then if [ -n "$3" ]; then
printf "%s [%s]: " "$prompt" "$default" printf "%s [%s]: " "$2" "$3" >&2
else else
printf "%s: " "$prompt" printf "%s: " "$2" >&2
fi fi
read -r value read -r _val
echo "${value:-$default}" eval "$1=\"\${_val:-$3}\""
} }
if [ $# -ge 3 ]; then if [ $# -ge 3 ]; then
@@ -32,12 +32,12 @@ if [ $# -ge 3 ]; then
OWNER="$3" OWNER="$3"
elif [ $# -ge 1 ]; then elif [ $# -ge 1 ]; then
IMAGE_TAG="$1" IMAGE_TAG="$1"
REGISTRY=$(ask "Registry" "") ask REGISTRY "Registry" ""
OWNER=$(ask "Owner" "") ask OWNER "Owner" ""
else else
IMAGE_TAG=$(ask "Tag" "${DEFAULT_TAG}") ask IMAGE_TAG "Tag" "${DEFAULT_TAG}"
REGISTRY=$(ask "Registry" "") ask REGISTRY "Registry" ""
OWNER=$(ask "Owner" "") ask OWNER "Owner" ""
fi fi
IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}" IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}"

View File

@@ -22,14 +22,14 @@ docker buildx version >/dev/null 2>&1 || die "docker buildx not available"
DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev) DEFAULT_TAG=$(git -C "${ROOT_DIR}" rev-parse --short HEAD 2>/dev/null || echo dev)
ask() { ask() {
prompt="$1"; default="$2" # $1 = variable name, $2 = prompt, $3 = default
if [ -n "$default" ]; then if [ -n "$3" ]; then
printf "%s [%s]: " "$prompt" "$default" printf "%s [%s]: " "$2" "$3" >&2
else else
printf "%s: " "$prompt" printf "%s: " "$2" >&2
fi fi
read -r value read -r _val
echo "${value:-$default}" eval "$1=\"\${_val:-$3}\""
} }
if [ $# -ge 3 ]; then if [ $# -ge 3 ]; then
@@ -38,12 +38,12 @@ if [ $# -ge 3 ]; then
OWNER="$3" OWNER="$3"
elif [ $# -ge 1 ]; then elif [ $# -ge 1 ]; then
IMAGE_TAG="$1" IMAGE_TAG="$1"
REGISTRY=$(ask "Registry" "") ask REGISTRY "Registry" ""
OWNER=$(ask "Owner" "") ask OWNER "Owner" ""
else else
IMAGE_TAG=$(ask "Tag" "${DEFAULT_TAG}") ask IMAGE_TAG "Tag" "${DEFAULT_TAG}"
REGISTRY=$(ask "Registry" "") ask REGISTRY "Registry" ""
OWNER=$(ask "Owner" "") ask OWNER "Owner" ""
fi fi
IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}" IMAGE_NAME="${IMAGE_NAME:-jukebox-maker}"