Replace just with run

This commit is contained in:
Oliver Davies 2024-07-31 18:06:27 +01:00
parent bfe0117e5e
commit 75bbef2dc9
5 changed files with 96 additions and 107 deletions

View file

@ -1,5 +1,4 @@
name: CI
on:
push:
branches:
@ -9,24 +8,9 @@ on:
schedule:
- cron: "0 12 15 * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4
- uses: cachix/install-nix-action@6ed004b9ccb68dbc28e7c85bee15fa93dbd214ac # v22
with:
nix_path: nixpkgs=channel:nixos-23.05
- run: nix develop --command just ci-test
- run: nix develop --command just build
- run: |
echo "DATE=$(date '+%Y-%m-%d-%H.%M.%S')" >> $GITHUB_ENV
- uses: ncipollo/release-action@6c75be85e571768fa31b40abf38de58ba0397db5 # v1.13.0
with:
artifacts: dist/build-configs
tag: ${{ env.DATE }}
- run: ./run ci:test

View file

@ -1,10 +1,9 @@
name: build-configs
type: symfony
language: php
flake:
devshell:
packages:
- just
- bashInteractive
- php82
- php82Packages.composer

View file

@ -12,7 +12,7 @@
inherit (pkgs) mkShell;
in {
devShells.${system}.default =
mkShell { buildInputs = with pkgs; [ just php82 php82Packages.composer ]; };
mkShell { buildInputs = with pkgs; [ bashInteractive php82 php82Packages.composer ]; };
formatter.${system} = pkgs.nixfmt;
};

View file

@ -1,87 +0,0 @@
_default:
just --list
build:
just clean
# Install dependencies.
composer validate
composer install --no-dev --prefer-dist --optimize-autoloader
composer install --prefer-dist --optimize-autoloader --working-dir ./vendor-bin/box
composer dump-env prod
./bin/build-configs cache:clear
./bin/build-configs cache:warmup
# Generate the phar file.
./vendor-bin/box/vendor/bin/box compile --config box.json.dist
rm -f .env.local .env.local.php
tree dist/
# TODO: build a Nix derivation and add it to the store.
clean:
rm -fr dist/* tmp vendor vendor-bin/box/vendor
touch dist/.keep var/.keep
ci-test:
nix develop --command composer install
nix develop --command just run-snapshots
nix develop --command vendor/bin/phpunit --testdox
test *args:
phpunit {{ args }}
create-snapshot config:
#!/usr/bin/env bash
set -o nounset
config_file="tests/snapshots/configs/{{ config }}.yaml"
output_path="tests/snapshots/output/{{ config }}"
cat "${config_file}"
rm -fr "${output_path}"
./bin/build-configs app:generate --config-file "${config_file}" --output-dir "${output_path}"
git status "${output_path}"
run-snapshots:
#!/usr/bin/env bash
rm -rf .ignored/snapshots
mkdir -p .ignored/snapshots
local configs=(
# TODO: add more configurations for different types and configurations.
drupal
drupal-commerce-kickstart
drupal-localgov
fractal
)
for config in "${configs[@]}"; do
config_file="tests/snapshots/configs/${config}.yaml"
input_path="tests/snapshots/output/${config}"
output_path=".ignored/snapshots/output/${config}"
cat "${config_file}"
./bin/build-configs app:generate --config-file "${config_file}" --output-dir "${output_path}"
find "${input_path}" -type f -print0 | while IFS= read -r -d '' original_file; do
generated_file="${output_path}/${original_file#"${input_path}"/}"
if cmp -s "${original_file}" "${generated_file}"; then
echo "Files match: ${original_file}"
else
# TODO: show the diff for all failed files. This will stop after the first failure.
echo "Files do not match: ${original_file}"
diff "${original_file}" "${generated_file}"
exit 1
fi
done
done

93
run Executable file
View file

@ -0,0 +1,93 @@
#!/usr/bin/env bash
# Do not edit this file. It is automatically generated by https://www.oliverdavies.uk/build-configs.
set -o errexit
set -o nounset
set -o pipefail
export PATH="$PATH:./vendor/bin"
function build {
nix build .
}
function ci:test {
composer install
test:snapshots
test --testdox
}
function clean {
rm -fr dist/* tmp vendor vendor-bin/box/vendor
touch dist/.keep var/.keep
}
function create-snapshot {
local config="$1"
config_file="tests/snapshots/configs/$config.yaml"
output_path="tests/snapshots/output/$config"
cat "$config_file"
rm -fr "$output_path"
./bin/build-configs app:generate --config-file "$config_file" --output-dir "$output_path"
git status "$output_path"
}
# 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"
}
function test {
phpunit "$@"
}
function test:snapshots {
rm -rf .ignored/snapshots
mkdir -p .ignored/snapshots
local configs=(
# TODO: add more configurations for different types and configurations.
drupal
drupal-commerce-kickstart
drupal-localgov
fractal
)
for config in "${configs[@]}"; do
config_file="tests/snapshots/configs/$config.yaml"
input_path="tests/snapshots/output/$config"
output_path=".ignored/snapshots/output/$config"
cat "${config_file}"
./bin/build-configs app:generate --config-file "$config_file" --output-dir "$output_path"
find "$input_path" -type f -print0 | while IFS= read -r -d '' original_file; do
generated_file="${output_path}/${original_file#"${input_path}"/}"
if cmp -s "$original_file" "$generated_file"; then
echo "Files match: $original_file"
else
# TODO: show the diff for all failed files. This will stop after the first failure.
echo "Files do not match: $original_file"
diff "$original_file" "$generated_file"
exit 1
fi
done
done
}
TIMEFORMAT=$'\nTask completed in %3lR'
time "${@:-help}"
# vim: ft=bash