diff options
Diffstat (limited to 'share/spack/csh/spack.csh')
-rw-r--r-- | share/spack/csh/spack.csh | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/share/spack/csh/spack.csh b/share/spack/csh/spack.csh index a78665beb3..6690f08eed 100644 --- a/share/spack/csh/spack.csh +++ b/share/spack/csh/spack.csh @@ -63,6 +63,47 @@ case cd: cd `\spack location $_sp_arg $_sp_args` endif breaksw +case env: + shift _sp_args # get rid of 'env' + + set _sp_arg="" + [ $#_sp_args -gt 0 ] && set _sp_arg = ($_sp_args[1]) + + if ( "$_sp_arg" == "-h" ) then + \spack env -h + else + switch ($_sp_arg) + case activate: + set _sp_env_arg="" + [ $#_sp_args -gt 1 ] && set _sp_env_arg = ($_sp_args[2]) + + if ( "$_sp_env_arg" == "" || "$_sp_env_arg" =~ "-*" ) then + # no args or does not start with -: just execute + \spack $_sp_flags env $_sp_args + else + shift _sp_args # consume 'activate' or 'deactivate' + # actual call to activate: source the output + eval `\spack $_sp_flags env activate --csh $_sp_args` + endif + breaksw + case deactivate: + set _sp_env_arg="" + [ $#_sp_args -gt 1 ] && set _sp_env_arg = ($_sp_args[2]) + + if ( "$_sp_env_arg" != "" ) then + # with args: execute the command + \spack $_sp_flags env $_sp_args + else + # no args: source the output + eval `\spack $_sp_flags env deactivate --csh` + endif + breaksw + default: + echo default + \spack $_sp_flags env $_sp_args + breaksw + endsw + endif case use: case unuse: case load: @@ -113,3 +154,4 @@ endsw _sp_end: unset _sp_args _sp_full_spec _sp_modtype _sp_module_args unset _sp_sh_cmd _sp_spec _sp_subcommand _sp_flags +unset _sp_arg _sp_env_arg |