diff options
Diffstat (limited to 'tcllib/support/devel/sak/help')
-rw-r--r-- | tcllib/support/devel/sak/help/cmd.tcl | 25 | ||||
-rw-r--r-- | tcllib/support/devel/sak/help/help.tcl | 75 | ||||
-rw-r--r-- | tcllib/support/devel/sak/help/help.txt | 8 | ||||
-rw-r--r-- | tcllib/support/devel/sak/help/pkgIndex.tcl | 4 | ||||
-rw-r--r-- | tcllib/support/devel/sak/help/topic.txt | 1 |
5 files changed, 113 insertions, 0 deletions
diff --git a/tcllib/support/devel/sak/help/cmd.tcl b/tcllib/support/devel/sak/help/cmd.tcl new file mode 100644 index 0000000..8fe5f8e --- /dev/null +++ b/tcllib/support/devel/sak/help/cmd.tcl @@ -0,0 +1,25 @@ +# -*- tcl -*- +# Implementation of 'help'. + +# Available variables +# * argv - Cmdline arguments + +if {[llength $argv] > 2} { + puts stderr "Usage: $argv0 help ?topic?" + exit 1 +} + +package require sak::help + +if {[llength $argv] == 1} { + # Argument is a topic. + # Locate text for the topic. + + sak::help::print [sak::help::on [lindex $argv 0]] + return +} + +sak::help::print [sak::help::alltopics] + +## +# ### diff --git a/tcllib/support/devel/sak/help/help.tcl b/tcllib/support/devel/sak/help/help.tcl new file mode 100644 index 0000000..7e00f1e --- /dev/null +++ b/tcllib/support/devel/sak/help/help.tcl @@ -0,0 +1,75 @@ +# -*- tcl -*- +# (C) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net> +## +# ### + +namespace eval ::sak::help {} + +# ### + +proc ::sak::help::print {text} { + global critcldefault + puts stdout [string map \ + [list @@ $critcldefault] $text] + return +} + +proc ::sak::help::on {topic} { + variable base + + # Look for static text and dynamic, i.e. generated help. + # Static is prefered. + + set ht [file join $base $topic help.txt] + if {[file exists $ht]} { + return [get_input $ht] + } + + set ht [file join $base $topic help.tcl] + if {[file exists $ht]} { + source $ht + return [sak::help::on::$topic] + } + + set help "" + append help \n + append help " The topic \"$topic\" is not known." \n + append help " The known topics are:" \n\n + + append help [topics] + + return $help +} + +proc ::sak::help::alltopics {} { + # Locate the quick-help for all topics and combine it with a + # general header. + + set help "\n" + append help " SAK - Swiss Army Knife\n\n" + append help " sak is a tool to ease the work" + append help " of developers and release managers. Try:\n\n" + append help [topics] + + return $help +} + +proc ::sak::help::topics {} { + variable base + set help "" + foreach f [lsort [glob -nocomplain -directory $base */topic.txt]] { + append help \tsak\ help\ [get_input $f] + } + return $help +} + +# ### + +namespace eval ::sak::help { + variable base [file join $::distribution support devel sak] +} + +## +# ### + +package provide sak::help 1.0 diff --git a/tcllib/support/devel/sak/help/help.txt b/tcllib/support/devel/sak/help/help.txt new file mode 100644 index 0000000..bca8f35 --- /dev/null +++ b/tcllib/support/devel/sak/help/help.txt @@ -0,0 +1,8 @@ + + help -- Print help message + + sak help ?topic? + + Print a help message about the specified topic. If no topic + was given then print a general help message about SAK itself, + and provide a list of the available topics. diff --git a/tcllib/support/devel/sak/help/pkgIndex.tcl b/tcllib/support/devel/sak/help/pkgIndex.tcl new file mode 100644 index 0000000..609a59a --- /dev/null +++ b/tcllib/support/devel/sak/help/pkgIndex.tcl @@ -0,0 +1,4 @@ +if {![package vsatisfies [package provide Tcl] 8.2]} return +package ifneeded sak::help 1.0 [list source [file join $dir help.tcl]] + + diff --git a/tcllib/support/devel/sak/help/topic.txt b/tcllib/support/devel/sak/help/topic.txt new file mode 100644 index 0000000..9d1eaca --- /dev/null +++ b/tcllib/support/devel/sak/help/topic.txt @@ -0,0 +1 @@ +help How to use help. |