summaryrefslogtreecommitdiff
path: root/share/spack/csh/spack.csh
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2014-08-17 01:41:32 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2014-08-17 01:41:32 -0700
commitb601fd08caf21b5fc11e6998a5ebd20a04ac57ad (patch)
tree8c1215deaa8bd5acedba3fc7cc0e36ff1e3d0ee8 /share/spack/csh/spack.csh
parent22bec329c1824ecd3271fffcef9ff793363ba93d (diff)
downloadspack-b601fd08caf21b5fc11e6998a5ebd20a04ac57ad.tar.gz
spack-b601fd08caf21b5fc11e6998a5ebd20a04ac57ad.tar.bz2
spack-b601fd08caf21b5fc11e6998a5ebd20a04ac57ad.tar.xz
spack-b601fd08caf21b5fc11e6998a5ebd20a04ac57ad.zip
Bugfixes for csh environment modules.
Diffstat (limited to 'share/spack/csh/spack.csh')
-rw-r--r--share/spack/csh/spack.csh42
1 files changed, 31 insertions, 11 deletions
diff --git a/share/spack/csh/spack.csh b/share/spack/csh/spack.csh
index 2f6b96f4eb..169e9878bf 100644
--- a/share/spack/csh/spack.csh
+++ b/share/spack/csh/spack.csh
@@ -22,14 +22,28 @@
# avoids the need to come up with a user-friendly naming scheme for
# spack dotfiles.
########################################################################
+# accumulate initial flags for main spack command
+set _sp_flags = ""
+while ( $#_sp_args > 0 )
+ if ( "$_sp_args[1]" !~ "-*" ) break
+ set _sp_flags = "$_sp_flags $_sp_args[1]"
+ shift _sp_args
+end
+
+# h and V flags don't require further output parsing.
+if ( "$_sp_flags" =~ *h* || "$_sp_flags" =~ *V* ) then
+ \spack $_sp_flags $_sp_args
+ goto _sp_end
+endif
+
# Set up args -- we want a subcommand and a spec.
-set _sp_subcommand="";
-set _sp_spec="";
-[ $#_sp_args -gt 0 ] && set _sp_subcommand = ($_sp_args[1]);
-[ $#_sp_args -gt 1 ] && set _sp_spec = ($_sp_args[2-]);
+set _sp_subcommand=""
+set _sp_spec=""
+[ $#_sp_args -gt 0 ] && set _sp_subcommand = ($_sp_args[1])
+[ $#_sp_args -gt 1 ] && set _sp_spec = ($_sp_args[2-])
# Figure out what type of module we're running here.
-set _sp_modtype = "";
+set _sp_modtype = ""
switch ($_sp_subcommand)
case use:
case unuse:
@@ -48,12 +62,12 @@ case unload:
case use:
case unuse:
set _sp_modtype = dotkit
- set _sp_sh_cmd = $_sp_subcommand
+ set _sp_sh_cmd = ( "`alias $_sp_subcommand'" )
breaksw
case load:
case unload:
set _sp_modtype = tcl
- set _sp_sh_cmd = ( module $_sp_subcommand )
+ set _sp_sh_cmd = ( "`alias module`" $_sp_subcommand )
breaksw
endsw
@@ -61,11 +75,17 @@ case unload:
# spec using 'spack module find', then use the appropriate module
# tool's commands to add/remove the result from the environment.
# If spack module command comes back with an error, do nothing.
- if { set _sp_full_spec = `command spack module find $_sp_modtype $_sp_spec` } then
- echo $_sp_sh_cmd $_sp_module_args $_sp_full_spec
+ set _sp_full_spec = ""
+ if { set _sp_full_spec = `\spack module find $_sp_modtype $_sp_spec` } then
+ $_sp_sh_cmd $_sp_module_args $_sp_full_spec
endif
+ breaksw
+
default:
- command spack $_sp_args
+ \spack $_sp_args
+ breaksw
endsw
-unset _sp_args _sp_full_spec _sp_modtype _sp_module_args _sp_sh_cmd _sp_spec _sp_subcommand
+_sp_end:
+unset _sp_args _sp_full_spec _sp_modtype _sp_module_args
+unset _sp_sh_cmd _sp_spec _sp_subcommand _sp_flags