refactor: finish moving ssh-* scripts to own installers
[webi-installers/.git] / postgres / install.sh
1 #!/bin/bash
2
3 set -e
4 set -u
5
6 pkg_cmd_name="postgres"
7 #WEBI_SINGLE=""
8
9 POSTGRES_DATA_DIR=$HOME/.local/share/postgres/var
10
11 function pkg_get_current_version() {
12     # 'postgres --version' has output in this format:
13     #       postgres (PostgreSQL) 10.13
14     # This trims it down to just the version number:
15     #       10.13
16     echo "$(postgres --version 2> /dev/null | head -n 1 | cut -d' ' -f3)"
17 }
18
19 function pkg_install() {
20     # mkdir -p $HOME/.local/opt
21     mkdir -p "$(dirname $pkg_src)"
22
23     # mv ./pgqsl* "$HOME/.local/opt/postgres-v10.13"
24     mv ./"p"* "$pkg_src"
25 }
26
27 function pkg_link() {
28     # rm -f "$HOME/.local/opt/postgres"
29     rm -f "$pkg_dst"
30     rm -f "$HOME/Applications/pgAdmin"*.app || true
31
32     # ln -s "$HOME/.local/opt/postgres-v10.13" "$HOME/.local/opt/postgres"
33     ln -s "$pkg_src" "$pkg_dst"
34     mkdir -p ~/Applications
35     ln -s "$pkg_src/pgAdmin 4.app" "$HOME/Applications/pgAdmin 4.app" || true
36 }
37
38 function pkg_post_install() {
39     webi_path_add "$pkg_dst_bin"
40
41     #echo "Initializing PostgreSQL with database at $POSTGRES_DATA_DIR/"
42
43     PWFILE="$(pwd)/pwfile.tmp"
44     mkdir -p "$POSTGRES_DATA_DIR"
45     chmod 0700 "$POSTGRES_DATA_DIR"
46
47     if [ ! -f "$POSTGRES_DATA_DIR/postgresql.conf" ]; then
48         echo "postgres" > "$PWFILE"
49         "$pkg_src/bin/initdb" \
50             -D "$POSTGRES_DATA_DIR/" \
51             --username postgres --pwfile "$PWFILE" \
52             --auth-local=password --auth-host=password
53     fi
54 }
55
56 function pkg_done_message() {
57     # TODO show with serviceman
58     echo "Installed 'postgres' and 'psql' at $pkg_dst"
59     echo ""
60     echo "IMPORTANT!!!"
61     echo ""
62     echo "Database initialized at $POSTGRES_DATA_DIR:"
63     echo "    postgres -D $POSTGRES_DATA_DIR -p 5432"
64     echo ""
65     echo "Username and password set to 'postgres':"
66     echo "    psql 'postgres://postgres:postgres@localhost:5432/postgres'"
67     echo ""
68 }