summarylogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
authorLeon2020-03-25 22:50:38 +0100
committerLeon2020-03-25 22:50:38 +0100
commit98dafcbddee239bf789ea9d94864b8fd76b19d5b (patch)
tree8566ed37bb17b7f15ccf4e7f6dbcf0752e8318ce /install.sh
downloadaur-98dafcbddee239bf789ea9d94864b8fd76b19d5b.tar.gz
Initial commit
Diffstat (limited to 'install.sh')
-rwxr-xr-xinstall.sh137
1 files changed, 137 insertions, 0 deletions
diff --git a/install.sh b/install.sh
new file mode 100755
index 000000000000..af2598a483bd
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,137 @@
+#!/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
+ if [ $? -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 [ $? -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
+}
+
+check_mugen() {
+ if [ -f "/opt/karaokemugen/karaokemugen" ]; then
+ echo -e "${_COL_GREEN_}Karaoke Mugen is installed in /opt/karaokemugen."
+ else
+ echo -e "${_COL_BRED_}Karaoke Mugen is not installed in /opt/karaokemugen. Exiting."
+ exit 1
+ 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 -G -- psql -c "DROP DATABASE karaokemugen_app; 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'; GRANT ALL PRIVILEGES ON DATABASE karaokemugen_app TO karaokemugen_app;"
+ sudo -u postgres -g postgres -H -- psql -d karaokemugen_app -c "CREATE EXTENSION unaccent;"
+ echo -e "${_COL_GREEN_}karaokemugen_app database created!"
+}
+
+apply_config() {
+ # TODO : interactively ask for some options (location of medias, etc...)
+ sudo tee /opt/karaokemugen/config.yml > /dev/null <<EOT
+App:
+ JwtSecret: $(uuid)
+System:
+ Binaries:
+ Postgres:
+ Linux: /usr/bin/
+EOT
+}
+
+create_system_group() {
+ if grep -q "^karaokemugen:" /etc/group; then
+ echo -e "${_BEGIN_}Using the existing ${_COL_YELLOW_}karaokemugen${_COL_BBLUE_} system group..."
+ else
+ echo -e "${_BEGIN_}Creating ${_COL_YELLOW_}karaokemugen${_COL_BBLUE_} system group..."
+ sudo groupadd karaokemugen
+ fi
+}
+
+add_user_to_group() {
+ echo -e "${_BEGIN_}Adding you (${_COL_YELLOW_}$USER${_COL_BBLUE_}) to ${_COL_YELLOW_}karaokemugen${_COL_BBLUE_} group..."
+ if grep -q "^karaokemugen:" /etc/group; then
+ sudo usermod -a -G karaokemugen $USER
+ echo -e "${_COL_GREEN_}Successfully added ${_COL_YELLOW_}$USER${_COL_GREEN_} to ${_COL_YELLOW_}karaokemugen${_COL_GREEN_} group"
+ else
+ echo -e "${_BEGIN_}You need first to install Karaoke Mugen by executing ${_COL_YELLOW_}\`karaokemugen-install\`${_COL_BBLUE_}."
+ exit 1
+ fi
+}
+
+# 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
+check_mugen
+
+setup_postgres
+
+create_system_group
+add_user_to_group
+sudo chown -R root:karaokemugen /opt/karaokemugen
+
+apply_config
+