#! /bin/bash

# Script used by systemd mysqld.service to run before executing mysqld

get_option () {
    local section=$1
    local option=$2
    local default=$3
    local instance=$4
    ret=$(/usr/bin/my_print_defaults  ${instance:+--defaults-group-suffix=@$instance} $section | \
              grep '^--'${option}'=' | cut -d= -f2- | tail -n 1)
    [ -z "$ret" ] && ret=$default
    echo $ret
}

install_db () {
    local instance=$1
    datadir=$(get_option mysqld datadir "/var/lib/mysql${instance:+-$instance}" $instance)
    log=$(get_option mysqld 'log[_-]error' "/var/log/mysql${instance:+-$instance}.log" $instance)

    if [ ! -d "$datadir" -a ! -h "$datadir" -a "x$(dirname "$datadir")" = "x/var/lib" ]; then
        install -d -m 0751 -omysql -gmysql "$datadir" || exit 1
    fi

    if [ ! -e "$log" -a ! -h "$log" -a x$(dirname "$log") = "x/var/log" ]; then
        case $(basename "$log") in
            mysql*.log) install /dev/null -m0640 -omysql -gmysql "$log" ;;
            *) ;;
        esac
    fi

    if [ -x /usr/sbin/restorecon ]; then
        /usr/sbin/restorecon "$datadir"
        [ -e "$log" ] && /usr/sbin/restorecon "$log"
    fi

    [ -d "$datadir/mysql" ] && exit 0

    logger -t "mysqld" "mysql database by default does not exist, please create the default database"
    logger -t "mysqld" "execution: /usr/sbin/mysqld ${instance:+--defaults-group-suffix=@$instance} --initialize --datadir=$datadir --user=mysql"
    exit 1
}

install_db $1
