Skip to content

Commit 1cc41aa

Browse files
committed
! cp-into-docker-run: check docker workdir option
1 parent 6db27f7 commit 1cc41aa

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

bin/cp-into-docker-run

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
#!/bin/bash
2+
# @Function
3+
# Copy the command into docker container and run the command in container.
4+
#
5+
# Example:
6+
# ${PROG} -c container_foo command_copied_into_container command_arg1
7+
#
8+
# @online-doc https://github.com/oldratlee/useful-scripts/blob/dev-2.x/docs/shell.md#-cp-into-docker-run
9+
# @author Jerry Lee (oldratlee at gmail dot com)
210
set -eEuo pipefail
311

412
PROG="$(basename "$0")"
@@ -23,6 +31,10 @@ redEcho() {
2331
[ -t 1 ] && echo "${ec}[1;31m$*$eend" || echo "$*"
2432
}
2533

34+
isAbsolutePath() {
35+
[[ "$1" =~ ^/ ]]
36+
}
37+
2638
die() {
2739
redEcho "Error: $*" 1>&2
2840
exit 1
@@ -133,9 +145,12 @@ while (($# > 0)); do
133145
esac
134146
done
135147

136-
if [ -n "${docker_command_cp_path:-}" ]; then
137-
[[ "$docker_command_cp_path" =~ ^/ ]] ||
138-
die "the command path in docker to copy must be absolute path: $docker_command_cp_path"
148+
if [ -n "${docker_workdir}" ]; then
149+
isAbsolutePath "$docker_workdir" ||
150+
die "docker workdir(-w/--workdir) must be absolute path: $docker_workdir"
151+
elif [ -n "${docker_command_cp_path}" ]; then
152+
isAbsolutePath "$docker_command_cp_path" ||
153+
die "when no docker workdir(-w/--workdir) is specified, the command path in docker to copy(-p/--cp-path) must be absolute path: $docker_command_cp_path"
139154
fi
140155

141156
################################################################################
@@ -163,16 +178,20 @@ fi
163178
run_command="$($READLINK_CMD -f "$run_command")"
164179
run_command_base_name="$(basename "$run_command")"
165180

166-
if [ -n "${docker_command_cp_path:-}" ]; then
167-
run_command_dir_in_docker="$(dirname "$docker_command_cp_path")"
168-
readonly run_command_in_docker="$docker_command_cp_path"
181+
if [ -n "${docker_command_cp_path}" ]; then
182+
if isAbsolutePath "$docker_command_cp_path"; then
183+
readonly run_command_in_docker="$docker_command_cp_path"
184+
else
185+
readonly run_command_in_docker="${docker_workdir:+"$docker_workdir/"}$docker_command_cp_path"
186+
fi
187+
run_command_dir_in_docker="$(dirname "$run_command_in_docker")"
169188
else
170189
run_timestamp="$(date "+%Y%m%d_%H%M%S")"
171190
readonly uuid="${PROG}_${run_timestamp}_${$}_${RANDOM}"
172191
readonly work_tmp_dir_in_docker="$docker_tmpdir/$uuid"
173192

193+
readonly run_command_in_docker="$work_tmp_dir_in_docker/$run_command_base_name"
174194
readonly run_command_dir_in_docker="$work_tmp_dir_in_docker"
175-
readonly run_command_in_docker="$run_command_dir_in_docker/$run_command_base_name"
176195
fi
177196

178197
cleanupWhenExit() {

0 commit comments

Comments
 (0)