[45674] users/perry/port_cutleaves/port_cutleaves

perry at macports.org perry at macports.org
Mon Jan 19 14:02:17 PST 2009


Revision: 45674
          http://trac.macports.org/changeset/45674
Author:   perry at macports.org
Date:     2009-01-19 14:02:16 -0800 (Mon, 19 Jan 2009)
Log Message:
-----------
perry/port_cutleaves - Exclusions can be string literals or regular expressions.

Modified Paths:
--------------
    users/perry/port_cutleaves/port_cutleaves

Modified: users/perry/port_cutleaves/port_cutleaves
===================================================================
--- users/perry/port_cutleaves/port_cutleaves	2009-01-19 19:52:37 UTC (rev 45673)
+++ users/perry/port_cutleaves/port_cutleaves	2009-01-19 22:02:16 UTC (rev 45674)
@@ -126,7 +126,7 @@
     return [lindex $port 4]
 }
 
-proc leaves {} {
+proc leaves {{exclusions {}}} {
     registry::open_dep_map
 
     # Return a list of installed ports with no dependents.
@@ -134,22 +134,20 @@
         puts stderr "Error: registry::installed failed: $result"
         return {}
     }
+
     set leaves {}
     foreach port $installed {
-        if {[llength [registry::list_dependents [name $port]]] < 1} {
+        if {[llength [registry::list_dependents [name $port]]] < 1
+            && ![should_be_excluded $port $exclusions]} {
             lappend leaves $port
         }
     }
     return $leaves
 }
 
-proc list_leaves {{exclusions {}}} {
-    foreach leaf [leaves] {
-        set full_name [full_name $leaf]
-        if {[lsearch -exact $exclusions $full_name] != -1} {
-            continue
-        }
-        puts $full_name
+proc list_leaves {leaves} {
+    foreach leaf $leaves {
+        puts [full_name $leaf]
     }
 }
 
@@ -161,6 +159,18 @@
     return [lindex $port 2]
 }
 
+proc should_be_excluded {port exclusions} {
+    foreach exclusion $exclusions {
+        set full_name [full_name $port]
+        # Return true if the exclusion, considered as a string literal or
+        # regular expression, matches the port's full name.
+        if {$exclusion eq $full_name || [regexp $exclusion $full_name]} {
+            return 1
+        }
+    }
+    return 0
+}
+
 proc uninstall {ports} {
     set uninstalled {}
     foreach port $ports {
@@ -217,8 +227,8 @@
 if {$option(V)} {
     puts port_cutleaves-$VERSION
 } elseif {$option(l)} {
-    list_leaves [exclusions $option(F)]
+    list_leaves [leaves [exclusions $option(F)]]
 } else {
-    exit [cut_leaves [leaves] [exclusions $option(F)]]
+    exit [cut_leaves [leaves [exclusions $option(F)]]]
 }
 exit 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090119/6ef3c1c7/attachment.html>


More information about the macports-changes mailing list