#!/usr/bin/env bash
set -euo pipefail

CIJ_TYPE=unknown
CIJ_ROOT=$(dirname "$(cd "$(dirname "${0}")" || true; pwd)")

if [[ -f "$CIJ_ROOT/modules/cijoe.sh" ]]; then
	CIJ_TYPE="reposrun"
elif [[ -f "$CIJ_ROOT/share/cijoe/modules/cijoe.sh" ]]; then
	CIJ_TYPE="sysinstall"
	CIJ_ROOT=$CIJ_ROOT/share/cijoe
fi

if [[ ! -d "$CIJ_ROOT" || "$CIJ_TYPE" == "unknown" ]]; then
	print "# FAILED: Cannot locate/determine CIJOE installation"
	exit
fi

export CIJ_TYPE
export CIJ_ROOT

HERE=$PWD

# Source in CIJOE
pushd "$CIJ_ROOT" || exit > /dev/null
# shellcheck source=modules/cijoe.sh
source modules/cijoe.sh

# Provide sourcing in a default or user-provided environment definition
ENV_FPATH=default.sh
if [[ -n ${1+x} ]]; then
	ENV_FPATH=$1
fi
ENV_FNAME=${ENV_FPATH##*/}
ENV_NAME=${ENV_FNAME%.*}

if [[ ! -f "$ENV_FPATH" ]]; then
	if [[ -f "$HERE/$ENV_FNAME" ]]; then
		ENV_FPATH="$HERE/$ENV_FNAME"
	elif [[ -f "$CIJ_ENVS/$ENV_FNAME" ]]; then
		ENV_FPATH="$CIJ_ENVS/$ENV_FNAME"
	elif [[ -f "$CIJ_ROOT/envs/$ENV_FPATH" ]]; then
		ENV_FPATH="$CIJ_ROOT/envs/$ENV_FPATH"
	else
		cij::err "cannot find default ENV_FPATH: '$ENV_FPATH'"
		popd || exit > /dev/null
		exit
	fi
fi
# shellcheck disable=SC2016
bash --rcfile <(echo '[[ -f ~/.bashrc ]] && . ~/.bashrc; source modules/cijoe.sh; cd '"$HERE"'; export PS1="[cijoe:'"$ENV_NAME"'] $PS1"; source '"$ENV_FPATH"'; cij::emph "Welcome to CIJOE ENV_FPATH: '"$ENV_FPATH"'"; ')

cij::emph "So long, and thanks for all the fish"

popd || exit
