#!/bin/bash

USE_PS1_MODE=false
NEWLINE=""

print_usage() {
    echo ""
    echo "localhost"
    echo ""
    echo "Prints an IP matching 192.168.x.y in wlan0"
    echo ""
    echo "Options:"
    echo -e "\t-h|--help     : Show this help message"
    echo -e "\t-p|--ps1      : Print in the format \"(x.y)\" for use in PS1"
    echo -e "\t-n|--newline  : No newline in print"
    echo ""
}

parse_opts(){

    while [[ $# -gt 0 ]]; do
        ## convert argument to lower case for robustness
        arg=$(printf "%s" "$1" | tr '[:upper:]' '[:lower:]')

        ## parse arguments
        case ${arg} in
            "h"|"-h"|"help"|"--help")
                print_usage
                exit 0
                ;;

            "-p"|"--ps1")
                USE_PS1_MODE=true
                ;;

            "-n"|"--newline")
                NEWLINE="-n"
                ;;

            *)
                echo "invalid option: $arg"
                print_usage
                exit -1
        esac
        shift
    done
}

parse_opts $@

if ifconfig | sed -ne '/wlan0/,$ p' | grep -Eoq -m 1 "inet[6]?( )?(addr:)?192.[0-9]+.[0-9]+.[0-9]+" ; then

    if $USE_PS1_MODE ; then
        echo -n "($(ifconfig | sed -ne '/wlan0/,$ p' | grep -Eo -m 1 "inet[6]?( )?(addr:)?192.[0-9]+.[0-9]+.[0-9]+" | cut -d " " -f 2 | cut -d "." -f 3,4))"
    else
        echo $NEWLINE "$(ifconfig | sed -ne '/wlan0/,$ p' | grep -Eo -m 1 "inet[6]?( )?(addr:)?192.[0-9]+.[0-9]+.[0-9]+" | cut -d " " -f 2 )"
    fi
else
    if ! $USE_PS1_MODE ; then
        echo $NEWLINE "No valid IP found"
    fi
fi
