#!/bin/bash
#########################################################
#                                                       #
# This is BashStyle-NG                                  #
#                                                       #
# Licensed under GNU GENERAL PUBLIC LICENSE v3          #
#                                                       #
# Copyright Christopher Roy Bratušek                    #
#                                                       #
#########################################################

. gettext.sh
export TEXTDOMAIN="bashstyle-rc"

case ${1} in
    --help | -h | "")
        bashstyle-help -a "Christopher Roy Bratusek" -e "nano@jpberlin.de" -h "https://www.nanolx.org/"\
                -l "GNU GPL v3" -n "random" -s $"print random numbers or strings"\
                -v "${BSNG_VERSION}" -y "${BSNG_YEAR}"\
                -o $"-s:length|print string containing all printable chars except space"\
                -o $"-0:length|print random number of given length"\
                -o $"-r:(lowest) highest|print random number in range lowest (or 0) and highest"\
                -o $"-a:length|print string containing only mixed-case letters"\
                -o $"-l:length|print string containing only lower-case letters"\
                -o $"-u:length|print string containing only upper-case letters"\
                -o $"-x:length|print string of hexadecimal numbers"\
                -o $"-a0:length|print alpha-numeric string (mixed-case)"
    ;;

    --special | -s )
        echo -e "$(tr -cd '[:graph:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --numerical | -0 )
        echo -e "$(tr -cd '[:digit:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --numericalrange | -r )
        if [[ ${3} ]]; then
                shuf -i "${2}-${3}" -n 1
        else    shuf -i "0-${2}" -n 1
        fi
    ;;

    --alpha | -a )
        echo -e "$(tr -cd '[:alpha:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --alphalow | -l )
        echo -e "$(tr -cd '[:lower:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --alphaup | -u )
        echo -e "$(tr -cd '[:upper:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --hexadecimal | -x )
        echo -e "$(tr -cd '[:xdigit:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;

    --alphanumerical | -a0 )
        echo -e "$(tr -cd '[:alnum:]' < /dev/urandom | head -c "${2:-16}")\n"
    ;;
esac
