From 9436cb7f94dfcd2f491ee9ca2c63446c6bc53250 Mon Sep 17 00:00:00 2001 From: Sam Tygier Date: Tue, 18 Dec 2018 21:06:18 +0000 Subject: [PATCH] Add commandline argument for config file A config file can be specified when running build, e.g.: ./build.sh myconfig --- README.md | 7 +++++++ build-docker.sh | 29 +++++++++++++++-------------- build.sh | 10 ++++++++++ 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a897488..c0ff51c 100755 --- a/README.md +++ b/README.md @@ -95,6 +95,13 @@ A simple example for building Raspbian: IMG_NAME='Raspbian' ``` +The config file can also be specified on the command line as an argument the `build.sh` or `build-docker.sh` scripts. + +``` +./build -c myconfig +``` + +This is parsed after `config` so can be used to override values set there. ## How the build process works diff --git a/build-docker.sh b/build-docker.sh index 16d20f5..e56f7d9 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -19,24 +19,25 @@ if [ -f config ]; then source config fi +while getopts "c:" flag +do + case "$flag" in + c) + EXTRA_CONFIG="$OPTARG" + config_file=( "${config_file[@]}" "--env-file" "$(pwd)/${EXTRA_CONFIG}") + source "$EXTRA_CONFIG" + ;; + esac +done + CONTAINER_NAME=${CONTAINER_NAME:-pigen_work} CONTINUE=${CONTINUE:-0} PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0} -if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then - if [ -z "${IMG_NAME}" ]; then - echo "IMG_NAME not set in 'config'" 1>&2 - echo 1>&2 - fi - cat >&2 < ) - CONTAINER_NAME=pigen_work set a name for the build container - CONTINUE=1 continue from a previously started container - PRESERVE_CONTAINER=1 keep build container even on successful build -EOF - exit 1 +if [ -z "${IMG_NAME}" ]; then + echo "IMG_NAME not set in 'config'" 1>&2 + echo 1>&2 +exit 1 fi CONTAINER_EXISTS=$($DOCKER ps -a --filter name="$CONTAINER_NAME" -q) diff --git a/build.sh b/build.sh index 0f36071..955a6e4 100755 --- a/build.sh +++ b/build.sh @@ -127,6 +127,16 @@ if [ -f config ]; then source config fi +while getopts "c:" flag +do + case "$flag" in + c) + EXTRA_CONFIG="$OPTARG" + source "$EXTRA_CONFIG" + ;; + esac +done + if [ -z "${IMG_NAME}" ]; then echo "IMG_NAME not set" 1>&2 exit 1