(line)
| 642 | |
| 643 | |
| 644 | def compile_fun_shell(line): |
| 645 | extr = [] |
| 646 | |
| 647 | def repl(match): |
| 648 | g = match.group |
| 649 | if g('dollar'): |
| 650 | return "$" |
| 651 | elif g('backslash'): |
| 652 | return '\\\\' |
| 653 | elif g('subst'): |
| 654 | extr.append((g('var'), g('code'))) |
| 655 | return "%s" |
| 656 | return None |
| 657 | |
| 658 | line = reg_act.sub(repl, line) or line |
| 659 | dvars = [] |
| 660 | |
| 661 | def add_dvar(x): |
| 662 | if x not in dvars: |
| 663 | dvars.append(x) |
| 664 | |
| 665 | def replc(m): |
| 666 | if m.group('and'): |
| 667 | return ' and ' |
| 668 | elif m.group('or'): |
| 669 | return ' or ' |
| 670 | else: |
| 671 | x = m.group('var') |
| 672 | add_dvar(x) |
| 673 | return 'env[%r]' % x |
| 674 | |
| 675 | parm = [] |
| 676 | app = parm.append |
| 677 | for (var, meth) in extr: |
| 678 | if var == 'SRC': |
| 679 | if meth: |
| 680 | app('tsk.inputs%s' % meth) |
| 681 | else: |
| 682 | app('" ".join([a.path_from(cwdx) for a in tsk.inputs])') |
| 683 | elif var == 'TGT': |
| 684 | if meth: |
| 685 | app('tsk.outputs%s' % meth) |
| 686 | else: |
| 687 | app('" ".join([a.path_from(cwdx) for a in tsk.outputs])') |
| 688 | elif meth: |
| 689 | if meth.startswith(':'): |
| 690 | add_dvar(var) |
| 691 | m = meth[1:] |
| 692 | if m == 'SRC': |
| 693 | m = '[a.path_from(cwdx) for a in tsk.inputs]' |
| 694 | elif m == 'TGT': |
| 695 | m = '[a.path_from(cwdx) for a in tsk.outputs]' |
| 696 | elif re_novar.match(m): |
| 697 | m = '[tsk.inputs%s]' % m[3:] |
| 698 | elif re_novar.match(m): |
| 699 | m = '[tsk.outputs%s]' % m[3:] |
| 700 | else: |
| 701 | add_dvar(m) |
no test coverage detected
searching dependent graphs…