mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 17:46:29 +09:00
nixos/mastodon: properly escape arguments to psql in init-db script
This commit is contained in:
parent
968905ab76
commit
4dd61b6e68
1 changed files with 7 additions and 10 deletions
|
@ -711,31 +711,28 @@ in {
|
||||||
systemd.services.mastodon-init-db = lib.mkIf cfg.automaticMigrations {
|
systemd.services.mastodon-init-db = lib.mkIf cfg.automaticMigrations {
|
||||||
script = lib.optionalString (!databaseActuallyCreateLocally) ''
|
script = lib.optionalString (!databaseActuallyCreateLocally) ''
|
||||||
umask 077
|
umask 077
|
||||||
|
export PGPASSWORD="$(cat '${cfg.database.passwordFile}')"
|
||||||
export PGPASSFILE
|
|
||||||
PGPASSFILE=$(mktemp)
|
|
||||||
cat > $PGPASSFILE <<EOF
|
|
||||||
${cfg.database.host}:${toString cfg.database.port}:${cfg.database.name}:${cfg.database.user}:$(cat ${cfg.database.passwordFile})
|
|
||||||
EOF
|
|
||||||
|
|
||||||
'' + ''
|
'' + ''
|
||||||
if [ `psql ${cfg.database.name} -c \
|
if [ `psql -c \
|
||||||
"select count(*) from pg_class c \
|
"select count(*) from pg_class c \
|
||||||
join pg_namespace s on s.oid = c.relnamespace \
|
join pg_namespace s on s.oid = c.relnamespace \
|
||||||
where s.nspname not in ('pg_catalog', 'pg_toast', 'information_schema') \
|
where s.nspname not in ('pg_catalog', 'pg_toast', 'information_schema') \
|
||||||
and s.nspname not like 'pg_temp%';" | sed -n 3p` -eq 0 ]; then
|
and s.nspname not like 'pg_temp%';" | sed -n 3p` -eq 0 ]; then
|
||||||
|
echo "Seeding database"
|
||||||
SAFETY_ASSURED=1 rails db:schema:load
|
SAFETY_ASSURED=1 rails db:schema:load
|
||||||
rails db:seed
|
rails db:seed
|
||||||
else
|
else
|
||||||
|
echo "Migrating database (this might be a noop)"
|
||||||
rails db:migrate
|
rails db:migrate
|
||||||
fi
|
fi
|
||||||
'' + lib.optionalString (!databaseActuallyCreateLocally) ''
|
'' + lib.optionalString (!databaseActuallyCreateLocally) ''
|
||||||
rm $PGPASSFILE
|
unset PGPASSWORD
|
||||||
unset PGPASSFILE
|
|
||||||
'';
|
'';
|
||||||
path = [ cfg.package pkgs.postgresql ];
|
path = [ cfg.package pkgs.postgresql ];
|
||||||
environment = env // lib.optionalAttrs (!databaseActuallyCreateLocally) {
|
environment = env // lib.optionalAttrs (!databaseActuallyCreateLocally) {
|
||||||
PGHOST = cfg.database.host;
|
PGHOST = cfg.database.host;
|
||||||
|
PGPORT = toString cfg.database.port;
|
||||||
|
PGDATABASE = cfg.database.name;
|
||||||
PGUSER = cfg.database.user;
|
PGUSER = cfg.database.user;
|
||||||
};
|
};
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue