示例#1
0
    def _get_explicit_value(self, node): 
        '''Return Variant with step's arg value'''

        if 'val' in node.attrib:
            return Variant.from_string(node.attrib['val'], node.attrib.get('type'))
        elif 'ref' in node.attrib:
            parts = node.attrib['ref'].split('.')
            if len(parts) == 1: #local variable
                option_name = parts[0]
                if option_name in self._inputs:
                    return self._inputs[option_name].get()
                if option_name in self._outputs:
                    return self._outputs[option_name].get()
                else:
                    raise RuntimeError('Reference to undefined option: ' + option_name)
            elif len(parts) == 2: #some pipeline output
                step_name, output_name = parts
                if step_name not in self._step_pipelines:
                    raise RuntimeError('Reference to undefined step: ' + step_name)
                output = self._step_pipelines[step_name]._get_output(output_name)
                
                if output is None:
                    raise RuntimeError('Undefined step output %s.%s has:%s' % (parts[0], parts[1], self._step_pipelines[parts[0]]._outputs))
                
                return output.get()
            else:
               raise RuntimeError('Wrong reference format')

        return None
示例#2
0
def main():
    if len(sys.argv) < 3:
        print(
            'usage:\nconvert <pipeline>.xml <output>.sh (arg_name=arg_value)*')
        return

    pl_file = sys.argv[1]
    script = sys.argv[2]
    args = {
        arg: Variant.from_string(value, 'string')
        for (arg, value) in [item.split('=') for item in sys.argv[3:]]
    }

    pm = PackageManager()
    include_sh = open('Test/diff_expr/include.sh', 'w')
    include_sh.write(pm.get_header())
    include_sh.close()

    pipeline = Pipeline(pl_file, pm)
    out_file = open(script, 'w')
    output = pipeline.generate(args)
    out_file.write('DIR="${BASH_SOURCE%/*}"\n. "$DIR/include.sh"\n\n')
    out_file.write(output)
    out_file.close()
    system('chmod +x ' + script)
    print(output)
示例#3
0
    def _process_option(self, node, args):
        '''Return Option, that contain values produced using args comed from step declaration'''
        opt = Option(node.attrib.get('repr'))
        name = node.attrib['name']

        if 'default' in node.attrib:
            opt.set_default_val(Variant.from_string(node.attrib['default'], node.attrib['type']))
        elif 'default_ref' in node.attrib:
            ref = node.attrib['default_ref'].strip()
            if ref in self._inputs:
                opt.set_default_val(self._inputs[ref].get())
            else:
                raise RuntimeError('Reference to currently undefined symbol: ' + ref)
        else:
            for child in node: #check by RELAXNG
                if child.tag == 'default':
                    opt.set_default_val(self._eval_expression(child))

        if name in args:
            opt.set_val(args[name])
        
        return opt
示例#4
0
def main():
    if len(sys.argv) < 3:
        print('usage:\nconvert <pipeline>.xml <output>.sh (arg_name=arg_value)*')
        return

    pl_file = sys.argv[1]
    script = sys.argv[2]
    args = {arg : Variant.from_string(value, 'string') for (arg, value) in [item.split('=') for item in sys.argv[3:]]}

    pm = PackageManager()
    include_sh = open('Test/diff_expr/include.sh', 'w')
    include_sh.write(pm.get_header())
    include_sh.close()

    pipeline = Pipeline(pl_file, pm)
    out_file = open(script, 'w')
    output = pipeline.generate(args)
    out_file.write('DIR="${BASH_SOURCE%/*}"\n. "$DIR/include.sh"\n\n')
    out_file.write(output)
    out_file.close()
    system('chmod +x ' + script)
    print(output)
示例#5
0
def join(mod_params, args):
    str_value =  (mod_params or '').join([arg.to_string() for arg in args])
    return Variant.from_string(str_value, 'string')
示例#6
0
def base_name(mod_params, args):
    assert len(args) == 1
    return Variant.from_string('.'.join(args[0].to_string().split('.')[:-1]))