[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