diff --git a/etc/fishrc b/etc/fishrc new file mode 100755 index 000000000..6029bf410 --- /dev/null +++ b/etc/fishrc @@ -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 . +# +# 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 - + +# ----------------------------------------------------------------------------- diff --git a/etc/getVariables.py b/etc/getVariables.py index 63df05e79..735177170 100755 --- a/etc/getVariables.py +++ b/etc/getVariables.py @@ -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) diff --git a/etc/zshrc b/etc/zshrc index 4031ece29..baf87ff37 100755 --- a/etc/zshrc +++ b/etc/zshrc @@ -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 + # -----------------------------------------------------------------------------