test process-comose postgres + check functionality

This commit is contained in:
2025-03-15 23:53:20 +04:00
parent ba4fb29ce5
commit 7e46072451

68
lib.nix
View File

@@ -8,8 +8,20 @@ in
config,
name,
enableTui ? false,
modules ? [ ],
}:
let
merged_config = lib.foldl' (acc: elem: acc // elem.config) config modules;
checks = lib.concatStringsSep "\n" (
lib.concatMap (
attrs:
lib.mapAttrsToList (k: v: ''
echo "Running ${k}"
${v}
echo "Passed ${k}"
'') attrs.checks
) modules
);
removeNullAndEmptyAttrs =
attrs:
let
@@ -29,7 +41,7 @@ in
};
configFile = toPCJson name (
removeNullAndEmptyAttrs (
config
merged_config
// {
is_tui_disabled = !enableTui;
}
@@ -39,16 +51,64 @@ in
pkgs.writeShellApplication {
inherit name;
text = ''
PC_CONFIG_FILES=${configFile} ${pkgs.process-compose}/bin/process-compose "$@"
${checks}
PC_CONFIG_FILES=${configFile} ${pkgs.process-compose}/bin/process-compose "$@"
'';
};
mkPostgres =
{
default_config ? false,
name,
default_config ? true,
config ? { },
extra_config ? '''',
package ? pkgs.postgresql,
...
}:
let
merged_config =
(
if default_config then
{
listen_addresses = "localhost";
port = 5432;
shared_buffers = "128MB";
worker_mem = "4M";
logging_collector = "off";
}
else
{ }
)
// config;
toStr =
value:
if true == value then
"yes"
else if false == value then
"no"
else if lib.isString value then
"'${lib.replaceStrings [ "'" ] [ "''" value ]}'"
else
builtins.toString value;
configFile = pkgs.writeTextDir "postgresql.conf" (
lib.concatStringSep "\n" (
lib.mapAttrsToList (n: v: "${n} = ${toStr v}") (lib.filterAttrs (
lib.const (x: x != null)
)) merged_config
)
);
configFileCheck = pkgs.writeShellScript {
name = "postgresql-config-check-${name}";
text = ''
${package}/bin/postgres -D${configFile} -C config_file
touch $out
'';
};
in
{ };
{
config.processes."${name}" = {
};
checks."postgresql${name}" = configFileCheck;
};
}