<pre style='margin:0'>
Aljaž Srebrnič (g5pw) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/08d0a695cae3f69740bb99d48e6a78772128dc50">https://github.com/macports/macports-base/commit/08d0a695cae3f69740bb99d48e6a78772128dc50</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 08d0a69 reclaim: Respect -N and -y flags
</span><span style='display:block; white-space:pre;color:#404040;'> new b41fb18 Merge pull request #65 from raimue/reclaim-nyflags
</span>08d0a69 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 08d0a695cae3f69740bb99d48e6a78772128dc50
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Thu Mar 15 23:51:46 2018 +0100
<span style='display:block; white-space:pre;color:#404040;'> reclaim: Respect -N and -y flags
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Do not ask questions in non-interactive mode (-N), but still run all the
</span><span style='display:block; white-space:pre;color:#404040;'> checks and remove ports and files by default. Do not delete any files in
</span><span style='display:block; white-space:pre;color:#404040;'> dry-run mode (-y), even if the user confirmed the removal.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/53857
</span>---
src/macports1.0/reclaim.tcl | 166 +++++++++++++++++++++++++-------------------
1 file changed, 94 insertions(+), 72 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/reclaim.tcl b/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 9824c3a..0f162d4 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,28 +80,30 @@ namespace eval reclaim {
</span> uninstall_inactive
remove_distfiles
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set last_run_contents [read_last_run_file]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$last_run_contents eq ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set msg "This appears to be the first time you have run 'port reclaim'."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists macports::ui_options(questions_yesno)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set retval [$macports::ui_options(questions_yesno) $msg "ReclaimPrompt" "" {y} 0 "Would you like to be reminded to run it every two weeks?"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$retval != 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # User said no, store disabled flag
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set last_run_contents disabled
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- write_last_run_file $last_run_contents
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Reminders disabled. Run 'port reclaim --enable-reminders' to enable."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set last_run_contents [read_last_run_file]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$last_run_contents eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set msg "This appears to be the first time you have run 'port reclaim'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists macports::ui_options(questions_yesno)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set retval [$macports::ui_options(questions_yesno) $msg "ReclaimPrompt" "" {y} 0 "Would you like to be reminded to run it every two weeks?"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$retval != 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # User said no, store disabled flag
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set last_run_contents disabled
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ write_last_run_file $last_run_contents
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Reminders disabled. Run 'port reclaim --enable-reminders' to enable."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the last run file will be updated below
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Reminders enabled. Run 'port reclaim --disable-reminders' to disable."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # the last run file will be updated below
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Reminders enabled. Run 'port reclaim --disable-reminders' to disable."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # couldn't ask the question, leave disabled for now
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set last_run_contents disabled
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # couldn't ask the question, leave disabled for now
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set last_run_contents disabled
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$last_run_contents ne "disabled"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- update_last_run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$last_run_contents ne "disabled"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ update_last_run
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -235,59 +237,72 @@ namespace eval reclaim {
</span> incr size_superfluous_files [file size $f]
}
if {[llength $superfluous_files] > 0} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[info exists macports::ui_options(questions_alternative)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- array set alternatives {d delete k keep l list}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while 1 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ array set alternatives {d delete k keep l list}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while 1 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set retstring "d"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists macports::ui_options(questions_alternative)]} {
</span> set retstring [$macports::ui_options(questions_alternative) [msgcat::mc \
"Found %d files (total %s) that are no longer needed and can be deleted." \
$num_superfluous_files [bytesize $size_superfluous_files]] "deleteFilesQ" "alternatives" {k}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch $retstring {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Deleting..."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f $superfluous_files {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set root_length [string length "${root_dist}/"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set home_length [string length "${home_dist}/"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- try -pass_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch $retstring {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Deleting... (dry run)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Deleting..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f $superfluous_files {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set root_length [string length "${root_dist}/"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set home_length [string length "${home_dist}/"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try -pass_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_info [msgcat::mc "Skipping deletion of unused file %s (dry run)" $f]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span> ui_info [msgcat::mc "Deleting unused file %s" $f]
file delete -- $f
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set directory [file dirname $f]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while {1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_below_root [string equal -length $root_length $directory "${root_dist}/"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set is_below_home [string equal -length $home_length $directory "${home_dist}/"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set directory [file dirname $f]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ while {1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_below_root [string equal -length $root_length $directory "${root_dist}/"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set is_below_home [string equal -length $home_length $directory "${home_dist}/"]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {!$is_below_root && !$is_below_home} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {!$is_below_root && !$is_below_home} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[llength [readdir $directory]] > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[llength [readdir $directory]] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_info [msgcat::mc "Skipping deletion of empty directory %s (dry run)" $directory]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span> ui_info [msgcat::mc "Deleting empty directory %s" $directory]
try -pass_signal {
file delete -- $directory
} catch {{*} eCode eMessage} {
ui_warn [msgcat::mc "Could not delete empty directory %s: %s" $directory $eMesage]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set directory [file dirname $directory]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_warn [msgcat::mc "Could not delete %s: %s" $f $eMessage]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set directory [file dirname $directory]
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_warn [msgcat::mc "Could not delete %s: %s" $f $eMessage]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- k {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "OK, keeping the files."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- l {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach f $superfluous_files {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg " $f"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ k {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "OK, keeping the files."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ l {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach f $superfluous_files {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg " $f"
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -456,20 +471,24 @@ namespace eval reclaim {
</span> ui_msg "Found no inactive ports."
} else {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ set retval 0
</span> if {[info exists macports::ui_options(questions_yesno)]} {
set retval [$macports::ui_options(questions_yesno) "Inactive ports found:" "" $inactive_names "y" 0 "Would you like to uninstall them?"]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${retval} == 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach port $inactive_ports {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Note: 'uninstall' takes a name, version, revision, variants and an options list.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try -pass_signal {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- registry_uninstall::uninstall [$port name] [$port version] [$port revision] [$port variants] {ports_force true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Error uninstalling $name: $eMessage"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${retval} == 0 && [macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Skipping uninstall of inactive ports (dry run)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${retval} == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach port $inactive_ports {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Note: 'uninstall' takes a name, version, revision, variants and an options list.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try -pass_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ registry_uninstall::uninstall [$port name] [$port version] [$port revision] [$port variants] {ports_force true}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Error uninstalling $name: $eMessage"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Not uninstalling ports."
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Not uninstalling ports."
</span> }
}
return 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -519,21 +538,24 @@ namespace eval reclaim {
</span> ui_msg "Found no unrequested ports without requested dependents."
} else {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ set retval 0
</span> if {[info exists macports::ui_options(questions_yesno)]} {
set retval [$macports::ui_options(questions_yesno) "Unrequested ports without requested dependents found:" "" $unnecessary_names "y" 0 "Would you like to uninstall them?"]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {${retval} == 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- foreach port $unnecessary_ports {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Note: 'uninstall' takes a name, version, revision, variants and an options list.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try -pass_signal {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- registry_uninstall::uninstall [$port name] [$port version] [$port revision] [$port variants] {ports_force true}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_error "Error uninstalling $name: $eMessage"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${retval} == 0 && [macports::global_option_isset ports_dryrun]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Skipping uninstall of unrequested ports (dry run)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } elseif {${retval} == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach port $unnecessary_ports {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Note: 'uninstall' takes a name, version, revision, variants and an options list.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ try -pass_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ registry_uninstall::uninstall [$port name] [$port version] [$port revision] [$port variants] {ports_force true}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } catch {{*} eCode eMessage} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Error uninstalling $name: $eMessage"
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Not uninstalling ports; use 'port setrequested' mark a port as explicitly requested."
</span> }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Not uninstalling ports; use 'port setrequested' mark a port as explicitly requested."
</span> }
}
return 0
</pre><pre style='margin:0'>
</pre>