summarylogtreecommitdiffstats
path: root/install.sh
blob: 25a354b182c5961f9c323a48faf825c00fe42bc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env bash

#  _  __                  _         __  __
# | |/ /__ _ _ _ __ _ ___| |_____  |  \/  |_  _ __ _ ___ _ _
# | ' </ _` | '_/ _` / _ \ / / -_) | |\/| | || / _` / -_) ' \
# |_|\_\__,_|_| \__,_\___/_\_\___| |_|  |_|\_,_\__, \___|_||_|
#                                              |___/

# This script creates the database and do some checks to make
# Karaoke Mugen App working.
# From AUR package karaokemugen-git

check_postgres() {
    sudo -u postgres -g postgres pg_ctl status -D /var/lib/postgres/data &> /dev/null
    EXIT_STATUS=$?
    if [ $EXIT_STATUS -eq 4 ]; then
        echo -e "${_COL_YELLOW_}Postgres is not initialized, initializing..."
        sudo -H -u postgres -g postgres initdb -D /var/lib/postgres/data
        check_postgres
    elif [ $EXIT_STATUS -eq 3 ]; then
        echo -e "${_COL_YELLOW_}Postgres is not running, starting..."
        sudo systemctl restart postgresql
        check_postgres
    else
        echo -e "${_COL_GREEN_}Postgres seems OK."
    fi
}

setup_postgres() {
    echo -e "${_BEGIN_}Creating the karaokemugen_app database..."
    # Create the DB for Mugen
    # Check if the DB already exists
    sudo -u postgres -g postgres -H -- psql -d karaokemugen_app -c ""
    if [ $? -eq 0 ]; then
        echo -e "${_COL_YELLOW_}karaokemugen_app database is existing, do you want to keep its content or reset it?"
        select dbch in "Keep data" "Reset database"; do
            case $dbch in
                "Keep data" ) echo -e "${_COL_GREEN_}karaokemugen_app database will be used." ; return 0;; # TODO : maybe do some integrity checks
                "Reset database" ) sudo -u postgres -g postgres -H -- psql -c "DROP DATABASE karaokemugen_app;"; sudo -u postgres -g postgres -H -- psql -c "DROP ROLE IF EXISTS karaokemugen_app;";;
            esac
        done
    fi
    # Creating the database
    sudo -u postgres -g postgres -H -- psql -c "CREATE DATABASE karaokemugen_app ENCODING 'UTF8';"
    sudo -u postgres -g postgres -H -- psql -c "CREATE USER karaokemugen_app WITH ENCRYPTED PASSWORD 'musubi';"
    sudo -u postgres -g postgres -H -- psql -c "GRANT ALL PRIVILEGES ON DATABASE karaokemugen_app TO karaokemugen_app;"
    sudo -u postgres -g postgres -H -- psql -d karaokemugen_app -c "CREATE EXTENSION unaccent;"
    sudo -u postgres -g postgres -H -- psql -d karaokemugen_app -c "GRANT CREATE ON SCHEMA public TO public;"
    echo -e "${_COL_GREEN_}karaokemugen_app database created!"
}

# use colors only if we have them
if [[ $(which tput > /dev/null 2>&1 && tput -T "${TERM}" colors || echo -n '0') -ge 8 ]] ; then
    _COL_YELLOW_='\e[0;33m'
    _COL_GREEN_='\e[0;32m'
    _COL_LIGHTGREY_='\e[0;37m'
    _COL_BRED_='\e[1;31m'
    _COL_BBLUE_='\e[1;34m'
    _COL_BWHITE_='\e[1;37m'
    _COL_DEFAULT_='\e[0m'
    _BEGIN_="${_COL_BRED_}-> ${_COL_BBLUE_}"
fi

while getopts ":g" opt; do
  case ${opt} in
    g )
      #target=$OPTARG
      echo -e "${_COL_YELLOW_}You may have to enter your sudo password"
      add_user_to_group
      echo -e "${_BEGIN_}Done! You need to restart your session to apply these changes."
      exit 0
      ;;
    \? )
      echo "Invalid option: $OPTARG" 1>&2
      exit 1
      ;;
  esac
done
shift $((OPTIND -1))

echo -e "${_BEGIN_}Welcome to the Karaoke Mugen installer!"
echo -e "${_COL_YELLOW_}⚠️ You may have to enter your sudo password a couple times during this installation."
echo -e "${_COL_YELLOW_}This script may not work if you tweaked your PostgreSQL configuration."
echo -e "${_COL_YELLOW_}If you encounter any problems during installation, contact the package maintainer."
echo -e "${_COL_YELLOW_}The installation will begin in 5 seconds."
sleep 5

echo -e "${_BEGIN_}Doing some initial checks..."
check_postgres

setup_postgres

echo -e "${_BEGIN_}Done! Go ahead and launch Karaoke Mugen using the desktop entry"