diff --git a/setup.py b/setup.py index 3fe4ed89cbba08375a85fecf0905b912a907dc11..2084bf25ed6c728265e433bd07123073708354c1 100644 --- a/setup.py +++ b/setup.py @@ -90,6 +90,7 @@ setup(name=name, 'proactive = slapos.recipe.proactive:Recipe', 'request = slapos.recipe.request:Recipe', 'sheepdogtestbed = slapos.recipe.sheepdogtestbed:SheepDogTestBed', + 'shell = slapos.recipe.shell:Recipe', 'symbolic.link = slapos.recipe.symbolic_link:Recipe', 'softwaretype = slapos.recipe.softwaretype:Recipe', 'siptester = slapos.recipe.siptester:SipTesterRecipe', diff --git a/slapos/recipe/shell.py b/slapos/recipe/shell.py new file mode 100644 index 0000000000000000000000000000000000000000..4dac87752923cb3db785bd2de288a8399d792839 --- /dev/null +++ b/slapos/recipe/shell.py @@ -0,0 +1,57 @@ +############################################################################## +# +# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program 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. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +############################################################################## +import os +import json +from slapos.recipe.librecipe import GenericBaseRecipe + +class Recipe(GenericBaseRecipe): + + def install(self): + env = os.environ.copy() + + path_list = self.options['path'].split('\n') + env.update(PATH=':'.join(path_list)) + env.update(SHELL=self.options['shell']) + env.update(HOME=self.options['home']) + + ps1 = self.options.get('ps1') + if ps1 is not None: + env.update(PS1=str(json.loads(ps1))) + else: + env.update(PS1=env.get('PS1', '> ')) + + wrapper = self.createPythonScript( + self.options['wrapper'], + 'slapos.recipe.librecipe.execute.executee', + [ # Executable + [self.options['shell']], + # Environment + env + ] + ) + + return [wrapper]