#!/bin/csh NeXtMidas shell initialization script must be sourced
#
# @author Jeff Schoen
# @version $Id: nmstart,v 1.57 2015/06/19 17:21:23 ntn Exp $
#

# check if NMROOT is defined
if ( ! $?NMROOT ) goto NO_NMROOT

# check if NMROOT directory exists
if (! -d $NMROOT ) then
  goto NOEXIST_NMROOT
else if (! -d $NMROOT/os/unix || ! -d $NMROOT/nxm/sys ) then
  # $NMROOT/nxm/sys or $NMROOT/os/unix does not exists
  goto INVALID_NMROOT
endif

# clean up from any previous sessions by running the (current version of) nmend
set args = ""
if ( $?NM_PID ) then
 if ( $NM_PID == $$ ) then
  source $NMROOT/os/unix/nmend
 endif
endif

# see which java home is defined (JAVAHOME then JAVA_HOME)
if ( ! $?JAVAHOME ) then
  if ($?JAVA_HOME ) then
    setenv JAVAHOME ${JAVA_HOME}
  else
    ! neither JAVAHOME nor JAVA_HOME are defined
    goto NO_JAVAHOME
  endif
endif
# check if JAVAHOME  directory exist
if (! -d $JAVAHOME) goto NOEXIST_JAVAHOME

setenv NM_JB    "$JAVAHOME/bin"
setenv NM_JAVA  "$NM_JB/java"
setenv NM_JAVAC "$NM_JB/javac"
setenv NM_OS    "$NMROOT/os/unix"
setenv NM_OPT    sys
setenv NM_DIR    lib
setenv NM_PID    $$

#setenv NM_SF  ~/nmsf_$NM_PID
# Per BUG 1368, look for NMHISTORY_DIR for saving nmsf files
if (! $?NMHISTORY_DIR ) then
  # default behavior if NMHISTORY_DIR is not defined
  setenv NM_SF ~/nmsf_$NM_PID
else
  if (! -d "$NMHISTORY_DIR" ) then
    echo "NMHISTORY_DIR $NMHISTORY_DIR defined but does not exist, using ~/"
    setenv NM_SF  ~/nmsf_$NM_PID
  else
    echo "Setting NMHISTORY_DIR to $NMHISTORY_DIR"
    setenv NM_SF ${NMHISTORY_DIR}/nmsf_$NM_PID
  endif
endif

# set common defines for java
setenv NM_JVM_FLAGS "-DNMROOT=$NMROOT/ -DNMPID=$NM_PID -DNMSF=$NM_SF"

# obtain optional user jvm flags from environment
if ( $?NM_USER_JVM_FLAGS ) then
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} ${NM_USER_JVM_FLAGS}"
endif

################################################################################
# check OS environment variables (which generally takes precedence over settings in NM_USER_JVM_FLAGS)
if ($?NM_USER_CP) then
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} -DCLASSPATH=${NM_USER_CP}"
endif

# NM_USER_CP_AFTER_SYS for BUG 1795 - since 2.9.3
if ($?NM_USER_CP_AFTER_SYS) then
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} -DCLASSPATHAFTERSYS=${NM_USER_CP_AFTER_SYS}"
endif

# NM_USER_CP_PREPEND for BUG 1795 - since 2.9.3
if ($?NM_USER_CP_PREPEND) then
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} -DCLASSPATHPREPEND=${NM_USER_CP_PREPEND}"
endif

if ( $?NM_USER_PROFILER_FLAGS ) then
  setenv NM_PROFILER_FLAGS "${NM_USER_PROFILER_FLAGS}"
endif

# NM_COMPLETION_AUX_EXCLUDE for BUG 2482 - since 3.1.0
if ($?NM_COMPLETION_AUX_EXCLUDE) then
  echo "NM_COMPLETION_AUX_EXCLUDE defined. FILES and tab-complete excluding '$NM_COMPLETION_AUX_EXCLUDE'"
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} -DCOMPLETIONAUXEXCLUDE=${NM_COMPLETION_AUX_EXCLUDE}"
endif

# since 3.1.3: to allow custom USER startup macro
if ( $?NM_STARTUP_MACRO ) then
  echo "Using '${NM_STARTUP_MACRO}' as a user-level startup macro"
  setenv NM_JVM_FLAGS "${NM_JVM_FLAGS} -DNMSTARTUP.USER=${NM_STARTUP_MACRO}"
endif

# setup and start session
alias nm        "set args = (\!*); source $NM_OS/nm"
alias nmprofile "set args = (\!*); source $NM_OS/nmprofile"
alias nmd       "set args = (\!*); source $NM_OS/nmdir"
alias nmend     "set args = (\!*); source $NM_OS/nmend"
alias nmedit    "$NM_OS/nmedit"

if (-e  $NM_SF.msf ) /bin/rm -f $NM_SF.msf
if (-e  $NM_SF.bat ) /bin/rm -f $NM_SF.bat
if (! $?NMOPTS) setenv NMOPTS $NMROOT/opts

# check if Java exists
if (! -e  $NM_JAVA ) goto NO_JAVA

# check if Java compiler (javac) exists (but only print warning if it doesn't)
if (! -e  $NM_JAVAC ) then
  echo "WARN: [nmstart] Cannot find Java compiler at: $NM_JAVAC"
  echo "      [nmstart] You will not be able to compile any Java classes."
endif

# Print out the Copyright notice... do it manually if NeXtMidas has not been
# compiled yet.
if ( ! -e ${NMROOT}/nxm/sys/lib/Shell.class ) then
  cat $NMROOT/nxm/sys/version.txt
  echo "NeXtMidas has not been built yet - see $NMROOT/readme.txt (nm make all)"
else
  # run %nmstartup and then exit
  nm -DCONFIGURE=TRUE
endif
goto DONE

################################################################################
NO_NMROOT:
  echo "ERROR: [nmstart] NMROOT is not defined!"
  goto DONE

NOEXIST_NMROOT:
  echo "ERROR: [nmstart] Specified NMROOT path does not exist: $NMROOT"
  goto DONE

INVALID_NMROOT:
  echo "ERROR: [nmstart] Specified NMROOT path is invalid: $NMROOT"
  goto DONE

NO_JAVAHOME:
  echo "ERROR: [nmstart] JAVAHOME is not defined!"
  goto DONE

NOEXIST_JAVAHOME:
  echo "ERROR: [nmstart] Specified JAVAHOME path does not exist: $JAVAHOME"
  goto DONE

NO_JAVA:
  echo "ERROR: [nmstart] Cannot find Java at: $NM_JAVA"
  echo "       [nmstart] Current JAVAHOME is: $JAVAHOME"
  goto DONE

################################################################################
DONE:
