[136144] trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl
larryv at macports.org
larryv at macports.org
Mon May 11 14:00:33 PDT 2015
Revision: 136144
https://trac.macports.org/changeset/136144
Author: larryv at macports.org
Date: 2015-05-11 14:00:32 -0700 (Mon, 11 May 2015)
Log Message:
-----------
muniversal-1.0: Refactor merger_target_provides
An attempt to escape quoting hell[1] by using a script template and
substituting salient values with `string map`[2].
[1] http://wiki.tcl.tk/1726
[2] http://wiki.tcl.tk/37332#pagetoc04c6ab3f
Modified Paths:
--------------
trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl
Modified: trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl
===================================================================
--- trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl 2015-05-11 20:51:18 UTC (rev 136143)
+++ trunk/dports/_resources/port1.0/group/muniversal-1.0.tcl 2015-05-11 21:00:32 UTC (rev 136144)
@@ -94,22 +94,27 @@
# register just the procedure, no pre-/post-
# User-code exceptions are caught and returned as a result of the target.
# Thus if the user code breaks, dependent targets will not execute.
+ set script_template {
+ variable proc_index
+ set proc_index [llength [ditem_key ${ditem} post]]
+ set proc_name proc-merger-post-${ident}-${target}-$proc_index
+ ditem_append ${ditem} merger-post $proc_name
+ proc $proc_name name {
+ set userproc_name user[lindex [info level 0] 0]
+ if {[catch $userproc_name result]} {
+ return -code error $result
+ }
+ return 0
+ }
+ makeuserproc user$proc_name $args
+ }
foreach target $args {
- set origproc [ditem_key $ditem procedure]
set ident [ditem_key $ditem name]
- proc merger-post-$target {args} "
- variable proc_index
- set proc_index \[llength \[ditem_key $ditem post\]\]
- ditem_append $ditem merger-post proc-merger-post-${ident}-${target}-\${proc_index}
- proc proc-merger-post-${ident}-${target}-\${proc_index} {name} \"
- if {\\\[catch userproc-merger-post-${ident}-${target}-\${proc_index} result\\\]} {
- return -code error \\\$result
- } else {
- return 0
- }
- \"
- makeuserproc userproc-merger-post-${ident}-${target}-\${proc_index} \$args
- "
+ proc merger-post-$target args \
+ [string map [list \${ditem} [list $ditem] \
+ \${ident} [list $ident] \
+ \${target} [list $target]] \
+ $script_template]
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150511/03a6aacd/attachment.html>
More information about the macports-changes
mailing list