#!/bin/bash
##
#
# Vaisala software source code file
#
# Copyright (c) Vaisala Oyj 2014. All rights reserved.
#
##
set -euo pipefail

function log {
    echo "$1" >&2
}

function check_permissions {
    if [ "$EUID" != "0" ]; then
        log "You must be root to run this script."
        exit 4
    fi
}

function ensure_group_exists {
    local group="$1"
    if ! getent group "$group" > /dev/null; then
        log "Add group '$group'."
        groupadd -r "$group"
    else
        log "Group '$group' already exists."
    fi
}

function ensure_user_exists {
    local user="$1"
    local user_description="$2"
    if ! getent passwd "$user" > /dev/null; then
        log "Add user '$user'."
        useradd -c "$user_description" "$user"
    else
        log "User '$user' already exists."
    fi
}

function user_belongs_to_group {
    local user="$1"
    local group="$2"
    local user_in_group=$(groups "$user" | grep "$group" | wc -l)
    [ "$user_in_group" != 0 ]
}

function ensure_user_belongs_to_group {
    local user="$1"
    local group="$2"
    if ! user_belongs_to_group "$user" "$group"; then
        log "Add user '$user' to group '$group'."

        if ! usermod -a -G "$group" "$user"; then
            log "Couldn't add user '$user' to group '$group'!"
        fi
    fi
}

log "Ensuring user 'radarop' exists"
check_permissions
ensure_group_exists "radarsw"
ensure_user_exists "radarop" "Radar Operator"
ensure_user_belongs_to_group "radarop" "radarsw"
