#!/usr/bin/env bash

# 
# ensure FORNIX_FOLDER exists
# 
if [ -z "$FORNIX_FOLDER" ]
then
    # 
    # find fornix_core
    # 
    path_to_file=""
    file_name="settings/fornix_core"
    folder_to_look_in="$PWD"
    while :
    do
        # check if file exists
        if [ -f "$folder_to_look_in/$file_name" ]
        then
            path_to_file="$folder_to_look_in/$file_name"
            break
        else
            if [ "$folder_to_look_in" = "/" ]
            then
                break
            else
                folder_to_look_in="$(dirname "$folder_to_look_in")"
            fi
        fi
    done
    if [ -z "$path_to_file" ]
    then
        #
        # what to do if file never found
        #
        echo "Im a script running with a pwd of:$PWD"
        echo "Im looking for settings/fornix_core in a parent folder"
        echo "Im exiting now because I wasnt able to find it"
        echo "thats all the information I have"
        exit
    fi
    export FORNIX_NEXT_RUN_ONLY_DO_BASIC_INIT="true"
    # run the basic init of fornix to get the FORNIX_FOLDER/FORNIX_COMMANDS_FOLDER/FORNIX_HOME etc
    . "$path_to_file"
fi


# main inputs
__temp_var__command_name="tools/ruby/check_gem_modules"
__temp_var__file_to_watch="$FORNIX_FOLDER/Gemfile"
__temp_var__hash_check_name="ruby_gems"
failed_check_command () {
    # what to do when node modules haven't been installed yet
    bundix -l
    bundler install
    # if successful
    if [ $? -eq 0 ] 
    then
        echo "[$__temp_var__command_name] Check finished (dependencies installed)"
    # if failed
    else
        echo "[$__temp_var__command_name] Check failed: issues with install"
    fi
}

# ensure that the source file and hash file exist
echo 
echo "[$__temp_var__command_name] Checking"
if [ -f "$__temp_var__file_to_watch" ]; then
    # 
    # create check file
    # 
    __temp_var__location_of_hash="$FORNIX_FOLDER/settings/.cache/.$__temp_var__hash_check_name.cleanable.hash"
    if ! [ -f "$__temp_var__location_of_hash" ]; then
        # make sure the folder exists
        mkdir -p "$(dirname "$__temp_var__location_of_hash")"
        touch "$__temp_var__location_of_hash"
    fi
    
    # 
    # compare check files
    # 
    __temp_var__old_hash="$(cat "$__temp_var__location_of_hash")"
    __temp_var__new_hash="$(cat "$__temp_var__file_to_watch" | md5sum)"
    # if something changed since last time; install!
    if [ "$__temp_var__old_hash" != "$__temp_var__new_hash" ]; then
        echo "$__temp_var__new_hash" > "$__temp_var__location_of_hash"
        failed_check_command
    else
        echo "[$__temp_var__command_name] Check Passed => assuming packages are installed"
    fi
    
    unset __temp_var__location_of_hash
    unset __temp_var__old_hash
    unset __temp_var__new_hash
else
    echo "[$__temp_var__command_name] Check Passed (but only because no dependency file was found)"
fi
unset __temp_var__command_name
unset __temp_var__file_to_watch
unset __temp_var__hash_check_name