def _process_objects(data): for k, v in data.iteritems(): if isfunction(v): data[k] = SourceCode.from_function(v) elif isinstance(v, dict): _process_objects(v) return data
def create_executable_script(filepath, body, program=None): """Create an executable script. Args: filepath (str): File to create. body (str or callable): Contents of the script. If a callable, its code is used as the script body. program (str): Name of program to launch the script, 'python' if None """ program = program or "python" if callable(body): from rez.utils.data_utils import SourceCode code = SourceCode.from_function(body) body = code.source if not body.endswith('\n'): body += '\n' with open(filepath, 'w') as f: # TODO: make cross platform f.write("#!/usr/bin/env %s\n" % program) f.write(body) # TODO: Although Windows supports os.chmod you can only set the readonly # flag. Setting the file readonly breaks the unit tests that expect to # clean up the files once the test has run. Temporarily we don't bother # setting the permissions, but this will need to change. if os.name == "posix": os.chmod(filepath, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
def _process_objects(data): for k, v in data.iteritems(): if isfunction(v): data[k] = SourceCode.from_function(v) elif isinstance(v, dict): _process_objects(v) return data
def create_executable_script(filepath, body, program=None): """Create an executable script. Args: filepath (str): File to create. body (str or callable): Contents of the script. If a callable, its code is used as the script body. program (str): Name of program to launch the script, 'python' if None """ program = program or "python" if callable(body): from rez.utils.data_utils import SourceCode code = SourceCode.from_function(body) body = code.source if not body.endswith('\n'): body += '\n' with open(filepath, 'w') as f: # TODO: make cross platform f.write("#!/usr/bin/env %s\n" % program) f.write(body) # TODO: Although Windows supports os.chmod you can only set the readonly # flag. Setting the file readonly breaks the unit tests that expect to # clean up the files once the test has run. Temporarily we don't bother # setting the permissions, but this will need to change. if os.name == "posix": os.chmod( filepath, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
def _convert_to_rex(self, commands): if isinstance(commands, list): from rez.utils.backcompat import convert_old_commands msg = "package %r is using old-style commands." % self.uri if config.disable_rez_1_compatibility or config.error_old_commands: raise SchemaError(None, msg) elif config.warn("old_commands"): print_warning(msg) commands = convert_old_commands(commands) if isinstance(commands, basestring): return SourceCode(commands) elif callable(commands): return SourceCode.from_function(commands) else: return commands
def _convert_to_rex(self, commands): if isinstance(commands, list): from rez.utils.backcompat import convert_old_commands msg = "package %r is using old-style commands." % self.uri if config.disable_rez_1_compatibility or config.error_old_commands: raise SchemaError(None, msg) elif config.warn("old_commands"): print_warning(msg) commands = convert_old_commands(commands) if isinstance(commands, basestring): return SourceCode(commands) elif callable(commands): return SourceCode.from_function(commands) else: return commands