<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/3358bc45035544bad9491db302fa68ff9f946f9d">https://github.com/macports/macports-base/commit/3358bc45035544bad9491db302fa68ff9f946f9d</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3358bc45035544bad9491db302fa68ff9f946f9d
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Feb 6 13:46:05 2024 +1100
<span style='display:block; white-space:pre;color:#404040;'> Adopt dict in action_{search,list}
</span>---
src/port/port.tcl | 103 +++++++++++++++++++++++++-----------------------------
1 file changed, 48 insertions(+), 55 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/port.tcl b/src/port/port.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index a4cb29852..c144cd4b1 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3392,36 +3392,35 @@ proc action_variants { action portlist opts } {
</span>
proc action_search { action portlist opts } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global private_options global_options
</span> set status 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![llength $portlist] && [info exists private_options(ports_no_args)] && $private_options(ports_no_args) eq "yes"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![llength $portlist] && [info exists ::private_options(ports_no_args)] && $::private_options(ports_no_args) eq "yes"} {
</span> ui_error "You must specify a search pattern"
return 1
}
# Copy global options as we are going to modify the array
<span style='display:block; white-space:pre;background:#ffe0e0;'>- array set options [array get global_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set options [array get ::global_options]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists options(ports_search_depends)] && $options(ports_search_depends) eq "yes"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array unset options ports_search_depends
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_fetch) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_extract) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_patch) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_build) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_lib) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_run) yes
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set options(ports_search_depends_test) yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $options ports_search_depends] && [dict get $options ports_search_depends] eq "yes"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict unset options ports_search_depends
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_fetch yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_extract yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_patch yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_build yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_lib yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_run yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set options ports_search_depends_test yes
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Array to hold given filters
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array set filters {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Dictionary to hold given filters
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set filters [dict create]
</span> # Default matchstyle
set filter_matchstyle "none"
set filter_case no
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach { option } [array names options ports_search_*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach option [dict keys $options ports_search_*] {
</span> set opt [string range $option 13 end]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if { $options($option) ne "yes" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict get $options $option] ne "yes"} {
</span> continue
}
switch -- $opt {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3443,12 +3442,12 @@ proc action_search { action portlist opts } {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set filters($opt) "yes"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set filters $opt yes
</span> }
# Set default search filter if none was given
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if { [array size filters] == 0 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set filters(name) "yes"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set filters(description) "yes"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict size $filters] == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set filters name yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set filters description yes
</span> }
set separator ""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3467,7 +3466,7 @@ proc action_search { action portlist opts } {
</span>
set res [list]
set portfound 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach { opt } [array names filters] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach opt [dict keys $filters] {
</span> # Map from friendly name
set opt [map_friendly_field_names $opt]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3485,48 +3484,48 @@ proc action_search { action portlist opts } {
</span> set res [portlist_sort $res]
set joiner ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach info $res {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array unset portinfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array set portinfo $info
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach portinfo $res {
</span> # XXX is this the right place to verify an entry?
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists portinfo(name)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![dict exists $portinfo name]} {
</span> puts stderr "Invalid port entry, missing portname"
continue
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists portinfo(description)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Invalid port entry for $portinfo(name), missing description"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set res_name [dict get $portinfo name]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![dict exists $portinfo description]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Invalid port entry for $res_name, missing description"
</span> continue
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists portinfo(version)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts stderr "Invalid port entry for $portinfo(name), missing version"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set res_description [dict get $portinfo description]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![dict exists $portinfo version]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts stderr "Invalid port entry for $res_name, missing version"
</span> continue
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ set res_version [dict get $portinfo version]
</span>
if {[macports::ui_isset ports_quiet]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts $portinfo(name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts $res_name
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists options(ports_search_line)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && $options(ports_search_line) eq "yes"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $options ports_search_line]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && [dict get $options ports_search_line] eq "yes"} {
</span> # check for ports without category, e.g. replaced_by stubs
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists portinfo(categories)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts "$portinfo(name)\t$portinfo(version)\t$portinfo(categories)\t$portinfo(description)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $portinfo categories]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts "${res_name}\t${res_version}\t[dict get $portinfo categories]\t$res_description"
</span> } else {
# keep two consecutive tabs in order to provide consistent columns' content
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts "$portinfo(name)\t$portinfo(version)\t\t$portinfo(description)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts "${res_name}\t${res_version}\t\t$res_description"
</span> }
} else {
puts -nonewline $joiner
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts -nonewline "$portinfo(name) @$portinfo(version)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists portinfo(revision)] && $portinfo(revision) > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts -nonewline "_$portinfo(revision)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts -nonewline "$res_name @$res_version"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $portinfo revision] && [dict get $portinfo revision] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts -nonewline "_[dict get $portinfo revision]"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists portinfo(categories)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- puts -nonewline " ([join $portinfo(categories) ", "])"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $portinfo categories]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts -nonewline " ([join [dict get $portinfo categories] ", "])"
</span> }
puts ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [wrap [join $portinfo(description)] 0 [string repeat " " 4]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [wrap [join $res_description] 0 [string repeat " " 4]]
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3536,8 +3535,8 @@ proc action_search { action portlist opts } {
</span> if { !$portfound } {
ui_notice "No match for $portname found"
} elseif {[llength $res] > 1} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {(![info exists global_options(ports_search_line)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- || $global_options(ports_search_line) ne "yes")} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {(![info exists ::global_options(ports_search_line)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ || $::global_options(ports_search_line) ne "yes")} {
</span> ui_notice "\nFound [llength $res] ports."
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3545,19 +3544,15 @@ proc action_search { action portlist opts } {
</span> set separator "--\n"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- array unset options
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array unset filters
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> return $status
}
proc action_list { action portlist opts } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global private_options
</span> set status 0
# Default to list all ports if no portnames are supplied
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if { ![llength $portlist] && [info exists private_options(ports_no_args)] && $private_options(ports_no_args) eq "yes"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if { ![llength $portlist] && [info exists ::private_options(ports_no_args)] && $::private_options(ports_no_args) eq "yes"} {
</span> add_to_portlist_with_defaults portlist [dict create name "-all-"]
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3579,14 +3574,12 @@ proc action_list { action portlist opts } {
</span> }
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach {name array} $res {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array unset portinfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array set portinfo $array
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach {name portinfo} $res {
</span> set outdir ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists portinfo(portdir)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set outdir $portinfo(portdir)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict exists $portinfo portdir]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set outdir [dict get $portinfo portdir]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- puts [format "%-30s @%-14s %s" $portinfo(name) $portinfo(version) $outdir]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts [format "%-30s @%-14s %s" [dict get $portinfo name] [dict get $portinfo version] $outdir]
</span> }
}
</pre><pre style='margin:0'>
</pre>