Added fish-shell to demonstrate that this approach allows completely different shells

--HG--
rename : etc/zshrc => etc/fishrc
This commit is contained in:
Bernhard F.W. Gschaider 2014-07-09 01:42:20 +02:00 committed by Dominik Christ
parent 53b7c23edc
commit e4d16f78eb
3 changed files with 73 additions and 3 deletions

41
etc/fishrc Executable file
View 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 -
# -----------------------------------------------------------------------------

View file

@ -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)

View file

@ -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
# -----------------------------------------------------------------------------