[ -n "${ENV}" ] || export ENV="/etc/shell/main.sh"

SH="$(cat /proc/$$/comm)"
export SH

main_source_directory() {
	local path="${1}"
	if [ -d "${path}" ]; then
		local count ifs module modules
		modules="$(find "${path}" \
			-type "f" \
			-name "*.sh" \
			-printf "%P
" | sort)"
		ifs="${IFS}"
		IFS="
"
		count=0
		echo
		echo ". ${path}"
		for module in ${modules}; do
			count=$((count + 1))
			printf "%02d" "${count}"
			echo " ${module%.sh}"
			module="${path}/${module}"
			if [ "${module}" != "${ENV}" ]; then
				. "${module}"
			fi
		done
		IFS="${ifs}"
	else
		echo "Not a directory: ${path}"
		return 1
	fi
}

main_source_file() {
	local path="${1}"
	if [ -f "${path}" ]; then
		main_source_directory "$(dirname "${path}")"
	else
		echo "Not a file: ${path}"
		return 1
	fi
}

main_source_file "${ENV}"

main_source_directory "${HOME}/shell"