Files
postgrest/nix/withtools.nix
T

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);
}