[104694] branches/new-help-system/base/src/port/port.tcl

raimue at macports.org raimue at macports.org
Sun Mar 31 14:52:29 PDT 2013


Revision: 104694
          https://trac.macports.org/changeset/104694
Author:   raimue at macports.org
Date:     2013-03-31 14:52:29 -0700 (Sun, 31 Mar 2013)
Log Message:
-----------
port/port.tcl:
Open man pages when running help command

Modified Paths:
--------------
    branches/new-help-system/base/src/port/port.tcl

Modified: branches/new-help-system/base/src/port/port.tcl
===================================================================
--- branches/new-help-system/base/src/port/port.tcl	2013-03-31 21:46:35 UTC (rev 104693)
+++ branches/new-help-system/base/src/port/port.tcl	2013-03-31 21:52:29 UTC (rev 104694)
@@ -1813,38 +1813,58 @@
 
 
 proc action_help { action portlist opts } {
-    set helpfile "$macports::prefix/var/macports/port-help.tcl"
-
+    set manext ".gz"
     if {[llength $portlist] == 0} {
-        print_help
-        return 0
-    }
+        set page "man1/port.1$manext"
+    } else {
+        set topic [lindex $portlist 0]
 
-    if {[file exists $helpfile]} {
-        if {[catch {source $helpfile} err]} {
-            puts stderr "Error reading helpfile $helpfile: $err"
-            return 1
+        # Look for an action with the requested argument
+        set actions [find_action $topic]
+        if {[llength $actions] == 1} {
+            set page "man1/port-[lindex $actions 0].1$manext"
+        } else {
+            if {[llength $actions] > 1} {
+                ui_error "\"port help ${action}\" is ambiguous: \n  port help [join $actions "\n  port help "]"
+                return 1
+            }
         }
-    } else {
-        puts stderr "Unable to open help file $helpfile"
-        return 1
     }
 
-    foreach topic $portlist {
-        if {![info exists porthelp($topic)]} {
-            puts stderr "No help for topic $topic"
-            return 1
+    set pagepath ${macports::prefix}/share/man/$page
+    if ![file exists $pagepath] {
+        set page "man7/portundocumented.7$manext"
+        set pagepath ${macports::prefix}/share/man/$page
+    }
+
+    if {$pagepath != ""} {
+        ui_debug "Opening man page '$pagepath'"
+
+        # Restore our entire environment from start time.
+        # man might want to evaluate TERM
+        global env boot_env
+        array unset env_save; array set env_save [array get env]
+        array unset env *
+        if {${macports::macosx_version} == "10.5"} {
+            unsetenv *
         }
+        array set env [array get boot_env]
 
-        set usage [action_get_usage $topic]
-        if {$usage != -1} {
-           puts -nonewline stderr $usage
-        } else {
-            ui_error "No usage for topic $topic"
+        if [catch {system -nodup "${macports::autoconf::man_path} $pagepath"} result] {
+            ui_debug "$::errorInfo"
+            ui_error "Unable to show man page using ${macports::autoconf::man_path}: $result"
             return 1
         }
 
-        puts stderr $porthelp($topic)
+        # Restore internal MacPorts environment
+        array unset env *
+        if {${macports::macosx_version} == "10.5"} {
+            unsetenv *
+        }
+        array set env [array get env_save]
+    } else {
+        ui_error "Sorry, no help for this topic is available."
+        return 1
     }
 
     return 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130331/b1e78943/attachment.html>


More information about the macports-changes mailing list