kas-docker: Pass build and shell options into container
This allows invocations like "kas-docker build --task clean kas.yml". Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
parent
5a68998ba7
commit
280a695ab3
43
kas-docker
43
kas-docker
@ -29,7 +29,7 @@ set -e
|
|||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
printf "%b" "Usage: $0 [OPTIONS] { build | shell } KASFILE\n"
|
printf "%b" "Usage: $0 [OPTIONS] { build | shell } [KASOPTIONS] KASFILE\n"
|
||||||
printf "%b" " $0 [OPTIONS] clean\n"
|
printf "%b" " $0 [OPTIONS] clean\n"
|
||||||
printf "%b" "\nPositional arguments:\n"
|
printf "%b" "\nPositional arguments:\n"
|
||||||
printf "%b" "build\t\tCheck out repositories and build target.\n"
|
printf "%b" "build\t\tCheck out repositories and build target.\n"
|
||||||
@ -59,6 +59,7 @@ else
|
|||||||
KAS_WORK_DIR=$(pwd)
|
KAS_WORK_DIR=$(pwd)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# parse kas-docker options
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--isar)
|
--isar)
|
||||||
@ -115,13 +116,8 @@ while [ $# -gt 0 ]; do
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
build|shell)
|
build|shell)
|
||||||
[ $# -eq 2 ] || usage
|
|
||||||
CMD=$1
|
CMD=$1
|
||||||
FILE=$(echo $2 | cut -d ':' -f 1)
|
shift 1
|
||||||
if ! FIRST_KAS_FILE=$(readlink -e $FILE); then
|
|
||||||
echo "Error: configuration file '$FILE' not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -132,13 +128,42 @@ done
|
|||||||
|
|
||||||
[ -n "${CMD}" ] || usage
|
[ -n "${CMD}" ] || usage
|
||||||
|
|
||||||
|
# parse kas sub-command (build or shell) options
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
trace docker run ${DOCKER_IMAGE} ${CMD} --help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--skip|--target|--task|-c|--command)
|
||||||
|
KAS_OPTIONS="${KAS_OPTIONS} $1 '$2'"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
KAS_OPTIONS="${KAS_OPTIONS} $1"
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
KAS_FILE=$1
|
||||||
|
FILE=$(echo ${KAS_FILE} | cut -d ':' -f 1)
|
||||||
|
if ! FIRST_KAS_FILE=$(readlink -e $FILE); then
|
||||||
|
echo "Error: configuration file '$FILE' not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[ -n "${FIRST_KAS_FILE}" ] || usage
|
||||||
|
|
||||||
KAS_FILE_DIR=$(dirname ${FIRST_KAS_FILE})
|
KAS_FILE_DIR=$(dirname ${FIRST_KAS_FILE})
|
||||||
|
|
||||||
REPO_DIR=$(git -C ${KAS_FILE_DIR} rev-parse --show-toplevel 2>/dev/null) \
|
REPO_DIR=$(git -C ${KAS_FILE_DIR} rev-parse --show-toplevel 2>/dev/null) \
|
||||||
|| REPO_DIR=$(hg -cwd ${KAS_FILE_DIR} root 2>/dev/null) \
|
|| REPO_DIR=$(hg -cwd ${KAS_FILE_DIR} root 2>/dev/null) \
|
||||||
|| REPO_DIR=${KAS_FILE_DIR}
|
|| REPO_DIR=${KAS_FILE_DIR}
|
||||||
|
|
||||||
KAS_FILE=/repo/$(echo $2 | sed 's|'${REPO_DIR}'/||g;s|:|:/repo/|g')
|
KAS_FILE=/repo/$(echo ${KAS_FILE} | sed 's|'${REPO_DIR}'/||g;s|:|:/repo/|g')
|
||||||
|
|
||||||
trace mkdir -p ${KAS_WORK_DIR}
|
trace mkdir -p ${KAS_WORK_DIR}
|
||||||
|
|
||||||
@ -188,4 +213,4 @@ for var in SHELL TERM KAS_DISTRO KAS_MACHINE KAS_TARGET KAS_TASK \
|
|||||||
done
|
done
|
||||||
|
|
||||||
trace docker run "$@" ${ISAR_ARGS} ${USER_ARGS} \
|
trace docker run "$@" ${ISAR_ARGS} ${USER_ARGS} \
|
||||||
${DOCKER_IMAGE} ${CMD} ${KAS_FILE}
|
${DOCKER_IMAGE} ${CMD} ${KAS_OPTIONS} ${KAS_FILE}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user