build-configs/templates/fractal/run.twig
Oliver Davies 4e255cd667 Ensure run.local files are located relative to the
...run file

Prevent erroring if `run` is being executed within a sub-directory, like
`assets`.
2024-07-31 01:20:30 +01:00

129 lines
2.3 KiB
Twig
Executable file

#!/usr/bin/env bash
# {{ managedText | raw }}
set -o errexit
set -o pipefail
PATH="$PATH:./node_modules/.bin"
{% if isDocker %}
# If we're running in CI we need to disable TTY allocation for docker compose
# commands that enable it by default, such as exec and run.
TTY="${TTY:-}"
if [[ ! -t 1 ]]; then
TTY="-T"
fi
{% endif %}
# Remove and generated or temporary files.
function build {
{% if isDocker %}
cmd fractal build "${@}"
{% else %}
fractal build "${@}"
{% endif %}
}
function ci:build {
{% if isDocker %}
cp -v --no-clobber .env.example .env
docker network create traefik_proxy || true
docker compose up -d
{% endif %}
build
}
# Remove and generated or temporary files.
function clean {
rm -fr build node_modules
touch build/.keep
}
# Disable Git hooks.
function git-hooks:off {
git config --unset core.hooksPath
}
# Enable Git hooks.
function git-hooks:on {
git config core.hooksPath .githooks
}
# Create a new Fractal component.
function fractal:new {
mkdir -p "components/${1}"
echo "name: ${1}" > "components/${1}/${1}.config.yml"
echo "${1}" > "components/${1}/${1}.twig"
}
# Display a list of all available commands.
function help {
printf "%s <task> [args]\n\nTasks:\n" "${0}"
compgen -A function | grep -v "^_" | cat -n
printf "\nExtended help:\n Each task has comments for general usage\n"
}
# Start the project.
function start {
{% if not isFlake %}
cp -v --no-clobber .env.example .env || true
docker compose up -d
{% else %}
fractal start --sync
{% endif %}
}
function sync {
clean
fractal build
aws s3 sync "build/." s3://"${BUCKET_NAME}" \
--acl "public-read" \
--cache-control max-age=3600
}
{% if not isFlake %}
# Run a command within the node container.
function cmd {
docker compose exec node yarn "${@}"
}
# Stop the project
function stop {
docker compose down
}
# Execute yarn commands.
function yarn {
cmd node yarn "${@}"
}
function _run {
local service="${1}"
local command="${2}"
docker compose run \
--entrypoint "${command}" \
--no-deps \
--rm \
-T \
"${service}" "${@}"
}
{% endif %}
# Include any local tasks.
# https://stackoverflow.com/a/6659698
[[ -e "${BASH_SOURCE%/*}/run.local" ]] && source "${BASH_SOURCE%/*}/run.local"
TIMEFORMAT=$'\nTask completed in %3lR'
time "${@:-help}"
# vim: ft=bash