ducttape:有时跳过任务:分支多个变量

时间:2014-09-17 22:43:21

标签: ducttape

与此问题相关:ducttape sometimes-skip task: cross-product error

说我有这样的计划:

task map_lexicon
    < in_lexicon=$pron_lex
    > out_lexicon=lex
    > out_w2p=lex.w2p
    > out_p2w=lex.p2w
{
    cp $in_lexicon $out_lexicon
    echo "" > $out_w2p
    echo "" > $out_p2w

}

task prune_lexicon
    # Prunes a lexicon
    < in_lexicon=$pron_lex
    > out_lex_pruned=lex.pruned
    > out_w2p_pruned=lex.w2p.pruned
    > out_p2w_pruned=lex.p2w.pruned
{
    cp $in_lexicon $out_lex_pruned
    echo "" > $out_w2p_pruned
    echo "" > $out_p2w_pruned
}

global {    
    lex1=/path/to/foo
    pron_lex=(PronLex: Lex1=$lex1)
}

在管道的下方,我想创建一个以map_lexiconprune_lexicon作为依赖关系的分支。但是,每个任务都有3个输出我需要使用。例如:

global {
    lex_type=(LexType: raw=$out_lexicon@map_lexicon pruned=$out_lex_pruned@prune_lexicon)
}

task foo
    < in_lex=$in_lex@map_lexicon
    < in_w2p=$out_w2p@map_lexicon
    < in_p2w=$out_p2w@map_lexicon
    > bar
{
    echo $in_lex $in_w2p $in_p2w > bar
}

有没有办法设置有时跳过的任务来管理单个分支点内的三个变量?

1 个答案:

答案 0 :(得分:1)

结果证明,所有必要的是用相同的分支点定义附加变量。

global {
    lex=(LexType: raw=$out_lexicon@map_lexicon pruned=$out_lex_pruned@prune_lexicon)
    w2p=(LexType: raw=$out_w2p@map_lexicon pruned=$out_w2p_pruned@prune_lexicon)
    p2w=(LexType: raw=$out_p2w@map_lexicon pruned=$out_p2w_pruned@prune_lexicon)

}

然后将foo定义为:

task foo
    < in_lex=$lex
    < in_w2p=$w2p
    < in_p2w=$p2w
    > bar
{
    echo $in_lex $in_w2p $in_p2w > bar
}