mirror of
https://github.com/opdavies/build-configs.git
synced 2025-01-22 18:27:31 +00:00
Oliver Davies
4e255cd667
...run file Prevent erroring if `run` is being executed within a sub-directory, like `assets`.
129 lines
2.3 KiB
Twig
Executable file
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
|