<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>