#!/bin/bash
DIR_MOUNT="/tmp"
UMOUNT_MODE='no'
VERBOSE='no'

usage() {
    echo "Starting ext[2|3|4] mounter"
    echo "Usage :"
    echo "$0 [Param] [Option]"
    echo "Param :"
    echo "  -d dev name Mount device"
    echo "  -u dev name Umount device"
    echo "Option"
    echo "  -v          Verbose mode"
    exit
}

while getopts d:u:hv option
do
    case $option in
    # Dev name
    d)
    DEV_NAME=$OPTARG
    ;;
    # Umount device
    u)
    DEV_NAME=$OPTARG
    UMOUNT_MODE='yes'
    ;;
    # Verbose mode
    v)
    VERBOSE='yes'
    ;;
    # Usage
    h)
    usage
    ;;
    esac
done

# All fields must be filled
if [ -z "$DEV_NAME" ]
then
    usage
    exit
fi

# Test if mount dir exists
if [ ! -e "/dev/$DEV_NAME" ]
then
    echo "« /dev/$DEV_NAME » not exists"
    exit
fi

# Set variable
DEST_DIR="$DIR_MOUNT/$DEV_NAME"
DEVICE="/dev/$DEV_NAME"

# Umount ?
if [ $UMOUNT_MODE == 'yes' ]
then
    echo "Umounting « $DEST_DIR »"
    if umount $DEST_DIR;
    then
        echo "Ok"
        rmdir $DEST_DIR
    else
        echo "Error while unmounting device"
    fi
    exit
else

    # Test if mount dir exists
    if [ ! -e $DEST_DIR ]
    then
        echo "Creating"
        if ! mkdir $DEST_DIR;
        then
            echo "Unable to create $DEST_DIR"
            exit
        fi
    fi

    echo "Mounting « $DEVICE » device in « $DEST_DIR »"

    # Verbose mode ?
    if [ $VERBOSE == 'yes' ]
    then
        MOUNT_CMD="fuse-ext2 $DEVICE $DEST_DIR"
    else
        MOUNT_CMD="fuse-ext2 $DEVICE $DEST_DIR &> /dev/null"
    fi

    # Mount device
    if eval $MOUNT_CMD;
    then
        echo "Device « $DEVICE » mounted in « $DEST_DIR »"
    else
        echo "Error while mounting device « $DEVICE » mounted in « $DEST_DIR »"
    fi
fi


