diff --git a/conf/env.sample b/conf/env.sample index 6fc4420..98c4a8f 100644 --- a/conf/env.sample +++ b/conf/env.sample @@ -36,3 +36,10 @@ AUTOSTART_PROJECT=0 ## and you want to just run a few of them. #~DOCKTIE_SERVICES_TO_START="nginx php-fpm mysql" DOCKTIE_SERVICES_TO_START="" + +## PROJECT_* - Define environment variables for this project per https://github.com/docktie/docktie/issues/33 +## NOTE: Does not accept yet a shell variable (e.g. $RELATIVE_DOCKERCOMPOSE_DIR cannot be used yet) +## Shown as part of 'docktie_cli env' +## +#~ PROJECT_BACKEND=website/src/backend +#~ PROJECT_FRONTEND=website/src/frontend diff --git a/init.sh b/init.sh index b761f98..f0969cd 100755 --- a/init.sh +++ b/init.sh @@ -17,6 +17,7 @@ fi ## ## Remove underscore or dash from PROJECT_ALIAS per https://github.com/docktie/docktie/issues/31 PROJECT_ALIAS=${1:-"$(basename $(pwd)|sed 's/[-_]//g')"} +REAL_PROJECT_DIRNAME=${1:-"$(basename $(pwd))"} ## TODO: Refactor as it is duplicating $PROJECT_ALIAS CONF_DIR="$DOCKTIE_DIR/conf" ENV_FILE="$CONF_DIR/${PROJECT_ALIAS}_env" @@ -32,7 +33,7 @@ fi export DOCKTIE_ENV="$ENV_FILE" . $DOCKTIE_ENV -export PROJECT_ROOTDIR="${DOCKTIE_COMMON_PARENTDIR}/${PROJECT_ALIAS}" ## for docktie-ext use +export PROJECT_ROOTDIR="${DOCKTIE_COMMON_PARENTDIR}/${REAL_PROJECT_DIRNAME}" ## for docktie-ext use ## Implement https://github.com/icasimpan/docktie/issues/11 ## Add relative custom location of docker-compose.yml per project @@ -66,6 +67,14 @@ BOOTSTRAP_DOCKTIE() { echo export PATH=$TOOLS_DIR:$PATH export DOCKER_CONTAINER_PREFIX=$DOCKER_CONTAINER_PREFIX ## needed in ps1 change visibility done in next line + + ## Add project-specific environment variables to export + ## Per https://github.com/docktie/docktie/issues/33 + for each_env in $(grep -v "^#\|^$\|^PROJECT_NAME" $DOCKTIE_ENV|grep ^PROJECT_); do + ## TODO: Bug - cannot use shell variable in $each_env + export $(echo $each_env|sed "s|\(.*\)=\(.*\)|\1=$PROJECT_ROOTDIR/\2|g") + done + bash --rcfile <(cat $CONF_DIR/ps1_changer) ## Below will run after 'exit' command echo "DockTie Dev Helper exited." diff --git a/utils/lib/kernel/module/cli.bash.inc b/utils/lib/kernel/module/cli.bash.inc index 13cba94..4f53ce3 100644 --- a/utils/lib/kernel/module/cli.bash.inc +++ b/utils/lib/kernel/module/cli.bash.inc @@ -81,6 +81,10 @@ cli() { cli_getx $* ;; + env) + autoload_functions "${lib_relpath}/cli_env" + cli_env $* + ;; *) echo "Oops, unknown 'docktie_cli' sub-command" ;; diff --git a/utils/lib/kernel/module/lib/cli_env.bash.inc b/utils/lib/kernel/module/lib/cli_env.bash.inc new file mode 100644 index 0000000..09b4ea0 --- /dev/null +++ b/utils/lib/kernel/module/lib/cli_env.bash.inc @@ -0,0 +1,35 @@ +##~ Shows shell environment variables +##~ +##~ Usage: docktie_cli env +##~ where is either +##~ project project specific defined in *_env +##~ docktie platform specific defined in init.sh +##~ all shows both project and docktie (default) +##~ +cli_env() { + local env_type=${1:-'all'} + + env_type=${env_type^^} ## Convert to uppercase. NOTE: Bash 4+ specific + + ## validate input. MUST be as defined in help context above + ## + if [[ "$env_type" =~ ALL|PROJECT|DOCKTIE ]]; then + case $env_type in + ALL) + env|grep "^PROJECT\|^DOCKTIE"|sort + ;; + PROJECT) + env|grep "^PROJECT"|sort + ;; + DOCKTIE) + env|grep "^DOCKTIE"|sort + ;; + *) + echo "Oops, something is wrong." + ;; + esac + else + echo "ERROR: Invalid parameter. See 'docktie_cli help env'" + fi + +} ## END: cli_env() diff --git a/utils/lib/kernel/module/lib/cli_help.bash.inc b/utils/lib/kernel/module/lib/cli_help.bash.inc index fef6a9b..c7a5a7e 100644 --- a/utils/lib/kernel/module/lib/cli_help.bash.inc +++ b/utils/lib/kernel/module/lib/cli_help.bash.inc @@ -7,6 +7,7 @@ ##~ services show project service names ##~ shell shell-in to a one of your project containers ##~ list shows all utilities available +##~ env shows relevant environment variables ##~ cli_help() { autoload_functions "get_cmd_helptext"