[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