Added fish-shell to demonstrate that this approach allows completely different shells
--HG-- rename : etc/zshrc => etc/fishrc
This commit is contained in:
parent
53b7c23edc
commit
e4d16f78eb
3 changed files with 73 additions and 3 deletions
41
etc/fishrc
Executable file
41
etc/fishrc
Executable file
|
@ -0,0 +1,41 @@
|
|||
#! /usr/bin/env zsh
|
||||
#----------------------------------*-sh-*--------------------------------------
|
||||
# ========= |
|
||||
# \\ / F ield | foam-extend: Open Source CFD
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | For copyright notice see file Copyright
|
||||
# \\/ M anipulation |
|
||||
#------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of foam-extend.
|
||||
#
|
||||
# foam-extend is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation, either version 3 of the License, or (at your
|
||||
# option) any later version.
|
||||
#
|
||||
# foam-extend is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Script
|
||||
# etc/fishrc
|
||||
#
|
||||
# Description
|
||||
# Startup file for OpenFOAM
|
||||
# Sourced from ~/..config/fish/config.fish
|
||||
# To be used from the fish-shell
|
||||
# Not really functional as no variables can be specified (somehow this breaks $argv)
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
set thisScript $argv[1]
|
||||
set thisDir (python -c "from os.path import *;import sys;sys.stdout.write(dirname(abspath(join(curdir,'$thisScript'))))")
|
||||
|
||||
python $thisDir/getVariables.py fish | source -
|
||||
|
||||
# -----------------------------------------------------------------------------
|
|
@ -239,13 +239,39 @@ class CshConvert(ShellConvert):
|
|||
val=val[:pos]+val[pos:].replace("="," ",1)
|
||||
return "alias %s '%s'" % (n,val)
|
||||
|
||||
class FishConvert(ShellConvert):
|
||||
def toVar(self,n,v):
|
||||
if type(v)==list:
|
||||
val=":".join(v)
|
||||
else:
|
||||
val=v
|
||||
|
||||
if n=="PATH":
|
||||
result="\nset -x PATH %s" % " ".join(v)
|
||||
else:
|
||||
result='set -x %s "%s"' % (n,val)
|
||||
|
||||
return result
|
||||
|
||||
def toAlias(self,n,v):
|
||||
val=v.replace(" . ","source ").replace("bash","fish")
|
||||
if val.find("unset ")>=0:
|
||||
val=val.replace("unset ","set -e ")
|
||||
# Make sure that more than one export is possible and no wrong = is replaced
|
||||
while val.find("export ")>=0:
|
||||
pos=val.find("export ")
|
||||
val=val.replace("export ","set -x ",1)
|
||||
val=val[:pos]+val[pos:].replace("="," ",1)
|
||||
return "alias %s '%s'" % (n,val)
|
||||
|
||||
class ZshConvert(BashConvert):
|
||||
def toAlias(self,n,v):
|
||||
return BashConvert.toAlias(self,n,v).replace("bash","zsh")
|
||||
|
||||
shells={"bash":BashConvert,
|
||||
"zsh":ZshConvert,
|
||||
"csh":CshConvert}
|
||||
shells={"bash" : BashConvert,
|
||||
"zsh" : ZshConvert,
|
||||
"fish" : FishConvert,
|
||||
"csh" : CshConvert}
|
||||
|
||||
result=shells[destShell]()(vars,aliases)
|
||||
open(path.abspath(sys.argv[0])+"."+destShell,"w").write(result)
|
||||
|
|
|
@ -37,4 +37,7 @@ thisScript=$0
|
|||
thisDir=`python -c "from os.path import *;import sys;sys.stdout.write(dirname(abspath(join(curdir,'$thisScript'))))"`
|
||||
source <($thisDir/getVariables.py zsh $*)
|
||||
|
||||
unset thisScript
|
||||
unset thisDir
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
|
Reference in a new issue