Modification : vm_{host,hosted,remote} -> {host,local,remote}/ .
[lhc/ateliers.git] / local / postgresql-user-create
diff --git a/local/postgresql-user-create b/local/postgresql-user-create
new file mode 100755 (executable)
index 0000000..56b37c9
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh -eux
+user="$1"
+db="${2-}"
+sudo -u postgres psql "${db-}" -a -f - <<-EOF
+       \set ON_ERROR_STOP on
+       DO LANGUAGE plpgsql \$\$
+       BEGIN
+               IF NOT EXISTS (
+                SELECT *
+                FROM pg_catalog.pg_user
+                WHERE usename = '$user'
+                LIMIT 1
+               ) THEN
+                       CREATE ROLE $user
+                        LOGIN
+                        NOCREATEDB
+                        NOCREATEROLE
+                        NOINHERIT
+                        NOSUPERUSER;
+               END IF;
+       END;
+       \$\$;
+       GRANT USAGE ON SCHEMA public TO $user;
+       ${db:+GRANT CONNECT,TEMPORARY ON DATABASE $db TO $user;}
+       EOF