#!/usr/bin/env bash
#-*- mode: sh; -*-
# Script to create or run a Modulino
#
# To create a modulino link from a well formed module name
#   modulino Foo::Bar::Baz ...  will create foo_bar_baz
#
# To create a modulino link and force the name
#   modulino Foo/Bar/Baz.pm ... will create foo-bar-baz
#
# To run a modulino...
#   foo-bar-baz

pgm=$(basename $0)

if [ "$pgm" = "modulino" ]; then
    extension="${1##*.}"
    bindir=$(dirname $(which modulino))
    
    if [ "$extension" = "$(basename $1)" ]; then
        echo ln -s $(which modulino) ${bindir}/$(echo "$1" | perl -ne 's/::/-/g; print lc;')
    else
        filename="${1%.*}"
        echo ln -s $(which modulino) ${bindir}/$(echo $filename | perl -ne 's/\//-/g; print lc')
    fi
else  
    REALPATH=$(which realpath)
    REALPATH=${REALPATH:-readlink -f}

    path=$(basename $($REALPATH $0))

    if ! [ "$path" = "modulino" ]; then
       pgm=$(basename $($REALPATH $0))
    fi
   
    MODULINO_PATH=$(echo $pgm | perl -ne 'chomp; printf "%s.pm", join "/", map { ucfirst $_ } split /-/;')
    MODULINO=$(echo $pgm | perl -ne 'chomp; print join "::", map { ucfirst $_ } split /-/;')
    
    MODULINO_RUN=$(perl -M$MODULINO -e 'print $INC{"'$MODULINO_PATH'"}';)
    
    if test -z "$MODULINO_RUN"; then
        echo "$MODULINO is not installed"
        exit 1;
    fi
    
    perl $MODULINO_RUN "$@"
fi
