81 lines
1.7 KiB
Nix
81 lines
1.7 KiB
Nix
{ buildEnv
|
|
, checkedShellScript
|
|
, lib
|
|
, postgresqlVersions
|
|
}:
|
|
let
|
|
# Wrap the `test/with_tmp_db` script with the required dependencies from Nix.
|
|
withTmpDb =
|
|
{ name, postgresql }:
|
|
checkedShellScript
|
|
{
|
|
name = "postgrest-with-${name}";
|
|
docs = "Run the given command in a temporary database with ${name}";
|
|
inRootDir = true;
|
|
redirectTixFiles = false;
|
|
}
|
|
''
|
|
# avoid starting multiple layers of with_tmp_db
|
|
if test ! -v PGRST_DB_URI; then
|
|
export PATH=${postgresql}/bin:"$PATH"
|
|
|
|
exec test/with_tmp_db "$@"
|
|
else
|
|
"$@"
|
|
fi
|
|
'';
|
|
|
|
# Helper script for running a command against all PostgreSQL versions.
|
|
withAll =
|
|
let
|
|
runners =
|
|
builtins.map
|
|
(pg:
|
|
''
|
|
cat << EOF
|
|
|
|
Running against ${pg.name}...
|
|
|
|
EOF
|
|
|
|
trap 'echo "Failed on ${pg.name}"' exit
|
|
|
|
${withTmpDb pg} "$@"
|
|
|
|
trap "" exit
|
|
|
|
cat << EOF
|
|
|
|
Done running against ${pg.name}.
|
|
|
|
EOF
|
|
'')
|
|
postgresqlVersions;
|
|
in
|
|
checkedShellScript
|
|
{
|
|
name = "postgrest-with-all";
|
|
docs = "Run command against all supported PostgreSQL versions.";
|
|
inRootDir = true;
|
|
}
|
|
(lib.concatStringsSep "\n\n" runners);
|
|
|
|
# Create a `postgrest-with-postgresql-` for each PostgreSQL version
|
|
withVersions = builtins.map withTmpDb postgresqlVersions;
|
|
|
|
in
|
|
buildEnv
|
|
{
|
|
name =
|
|
"postgrest-with";
|
|
|
|
paths =
|
|
[
|
|
withAll.bin
|
|
] ++ (builtins.map (v: v.bin) withVersions);
|
|
}
|
|
# make withTools.latest available for other nix files
|
|
// {
|
|
latest = withTmpDb (builtins.head postgresqlVersions);
|
|
}
|