1
0
mirror of https://github.com/lutris/lutris synced 2024-07-08 19:45:47 +00:00

Support file paths in the execute task

Support entering a file path in the 'file' key of the execute task.
And expand variables in the path –>  Fixes #70.
This commit is contained in:
Xodetaetl 2014-08-20 16:02:31 +02:00 committed by Mathieu Comandon
parent 599ab23595
commit 8b54e3118f
2 changed files with 8 additions and 6 deletions

View File

@ -188,7 +188,7 @@ Executing a file
---------------- ----------------
Execute files with the ``execute`` directive. Use the ``args`` parameter to add Execute files with the ``execute`` directive. Use the ``args`` parameter to add
command arguments, and ``file`` to reference a ``file id``. command arguments, and ``file`` to reference a ``file id`` or a path.
Example: Example:

View File

@ -443,17 +443,19 @@ class ScriptInterpreter(object):
os.popen('chmod +x "%s"' % filename) os.popen('chmod +x "%s"' % filename)
def execute(self, data): def execute(self, data):
"""Run an executable script""" """Run an executable file"""
if isinstance(data, dict): if isinstance(data, dict):
exec_id = data['file'] file_ref = data['file']
args = [self._substitute(arg) args = [self._substitute(arg)
for arg in data.get('args', '').split()] for arg in data.get('args', '').split()]
else: else:
exec_id = data file_ref = data
args = [] args = []
exec_path = self._get_file(exec_id) # Determine whether 'file' value is a file id or a path
exec_path = self._get_file(file_ref) or self._substitute(file_ref)
if not exec_path: if not exec_path:
raise ScriptingError("Unable to find file %s" % exec_id, exec_id) raise ScriptingError("Unable to find file %s" % file_ref,
file_ref)
if not os.path.exists(exec_path): if not os.path.exists(exec_path):
raise ScriptingError("Unable to find required executable", raise ScriptingError("Unable to find required executable",
exec_path) exec_path)