#!/bin/bash

version="0.0.3"
reldate="2026/08/01"

if (( EUID != 0 )); then
    echo "nanolx-skel must be run as root"
    exit 1
fi

source /etc/default/useradd

case ${1} in
    enable )
        sed 's,^.*SKEL=.*,SKEL=/usr/share/nanolx/skel/,' -i /etc/default/useradd
        sed 's,^.*SHELL=.*,SHELL=/bin/bash,' -i /etc/default/useradd
    ;;

    disable )
        sed 's,^SKEL=.*,# SKEL=/etc/skel/,' -i /etc/default/useradd
        sed 's,^SHELL=.*,# SHELL=/bin/sh,' -i /etc/default/useradd
    ;;

    check )
        if [[ "${SKEL%/}" == "/usr/share/nanolx/skel" ]]; then
            echo "nanolx-skel:  enabled"
        else
            echo "nanolx-skel:  disabled"
        fi
    ;;

    force-update )
        mapfile -t skel_files < <(cd "${SKEL}" && LC_ALL=C find . -mindepth 1 -printf '%P\n')
        awk -F: '$3 >= 1000 && $3 < 60000 {print $1 ":" $6}' /etc/passwd | while read -r line; do
            user="${line%%:*}"
            home="${line##*:}"

            if [ -d "${home}" ]; then
                echo "Updating ${user} (${home})"
                for rel_path in "${skel_files[@]}"; do
                    src="${SKEL}/${rel_path}"
                    dest="${home}/${rel_path}"

                    if [ -d "${src}" ]; then
                        mkdir -p "${dest}"
                    elif [ -f "${src}" ]; then
                        [ -f "${dest}" ] && cp -p "${dest}" "${dest}.bak"
                        cp "${src}" "${dest}"
                    fi

                    chown "${user}:${user}" "${dest}"
                done
            fi
        done
    ;;

    * )
        echo -e "nanolx-skel v${version} (${reldate})
© 2026 Christopher Roy Bratusek <nano@jpberlin.de>

licensed under the GNU General Public License v3 (or newer)

usage:
    nanolx-skel enable          [use '/usr/share/nanolx/skel' instead of '/etc/skel']
    nanolx-skel disable         [use original '/etc/skel']
    nanolx-skel check           [check whether nanolx-skel is active]
    nanolx-skel force-update    [force update skel files for existing users]
"
    ;;
esac
