refactor: allow missing project.toml

We should treat the project.toml as an optional file, as is the Procfile. Additionally, moving the file into place early will ensure there is no chance of selecting the wrong file.
This commit is contained in:
Jose Diaz-Gonzalez
2021-07-10 01:56:37 -04:00
parent 135e78c868
commit 4022ebd31c
3 changed files with 31 additions and 13 deletions

View File

@@ -53,7 +53,7 @@ dokku builder:set node-js-app selected pack
### Changing the `project.toml` location
When deploying a monorepo, it may be desirable to specify the specific path of the `project.toml` file to use for a given app. This can be done via the `builder-pack:set` command. If a value other than `project.toml` is specified and that file does not exist in the app's build directory, then the build will fail.
When deploying a monorepo, it may be desirable to specify the specific path of the `project.toml` file to use for a given app. This can be done via the `builder-pack:set` command. If a value other than `project.toml` is specified and that file does not exist in the app's build directory, Dokku will continue the build process as if the repository has no `project.toml`.
```shell
dokku builder-pack:set node-js-app projecttoml-path project2.toml

View File

@@ -1,7 +1,6 @@
#!/usr/bin/env bash
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/config/functions"
source "$PLUGIN_AVAILABLE_PATH/builder-pack/internal-functions"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
@@ -29,17 +28,6 @@ trigger-builder-pack-builder-build() {
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
local NEW_PROJECT_TOML="$(fn-builder-pack-computed-projecttoml-path "$APP")"
if [[ -n "$NEW_PROJECT_TOML" ]]; then
if [[ ! -f "$NEW_PROJECT_TOML" ]] && [[ "$NEW_PROJECT_TOML" != "project.toml" ]]; then
dokku_log_fail "Invalid projecttoml-path specified: $NEW_PROJECT_TOML"
fi
if [[ "$NEW_PROJECT_TOML" != "project.toml" ]]; then
mv "$NEW_PROJECT_TOML" project.toml
fi
fi
local TMP_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")
trap "rm -rf '$TMP_FILE' >/dev/null" RETURN INT TERM

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
source "$PLUGIN_AVAILABLE_PATH/builder-pack/internal-functions"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
trigger-builder-pack-core-post-extract() {
declare desc="builder-pack post-extract plugin trigger"
declare trigger="post-extract"
declare APP="$1" SOURCECODE_WORK_DIR="$2"
local NEW_PROJECT_TOML="$(fn-builder-pack-computed-projecttoml-path "$APP")"
pushd "$TMP_WORK_DIR" >/dev/null
if [[ -z "$NEW_PROJECT_TOML" ]]; then
return
fi
if [[ ! -f "$NEW_PROJECT_TOML" ]]; then
rm -f project.toml
return
fi
if [[ "$NEW_PROJECT_TOML" != "project.toml" ]]; then
mv "$NEW_PROJECT_TOML" project.toml
fi
popd &>/dev/null
}
trigger-builder-pack-post-extract "$@"