File Annotation
Not logged in
2a98ac44bd 2007-10-02       aku: ## -*- tcl -*-
2a98ac44bd 2007-10-02       aku: # # ## ### ##### ######## ############# #####################
2a98ac44bd 2007-10-02       aku: ## Copyright (c) 2007 Andreas Kupries.
2a98ac44bd 2007-10-02       aku: #
2a98ac44bd 2007-10-02       aku: # This software is licensed as described in the file LICENSE, which
2a98ac44bd 2007-10-02       aku: # you should have received as part of this distribution.
2a98ac44bd 2007-10-02       aku: #
2a98ac44bd 2007-10-02       aku: # This software consists of voluntary contributions made by many
2a98ac44bd 2007-10-02       aku: # individuals.  For exact contribution history, see the revision
2a98ac44bd 2007-10-02       aku: # history and logs, available at http://fossil-scm.hwaci.com/fossil
2a98ac44bd 2007-10-02       aku: # # ## ### ##### ######## ############# #####################
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: ## Option database, processes the command line. Note that not all of
2a98ac44bd 2007-10-02       aku: ## the option information is stored here. Parts are propagated to
2a98ac44bd 2007-10-02       aku: ## other pieces of the system and handled there, via option
2a98ac44bd 2007-10-02       aku: ## delegation
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: # # ## ### ##### ######## ############# #####################
2a98ac44bd 2007-10-02       aku: ## Requirements
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: package require Tcl 8.4                         ; # Required runtime.
d57b7b4a05 2007-10-02       aku: package require snit                            ; # OO system.
d57b7b4a05 2007-10-02       aku: package require vc::tools::trouble              ; # Error reporting.
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: # # ## ### ##### ######## ############# #####################
2a98ac44bd 2007-10-02       aku: ##
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: snit::type ::vc::fossil::import::cvs::option {
2a98ac44bd 2007-10-02       aku:     # # ## ### ##### ######## #############
2a98ac44bd 2007-10-02       aku:     ## Public API, Options.
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # --help, --help-passes, -h
2a98ac44bd 2007-10-02       aku:     # --version
2a98ac44bd 2007-10-02       aku:     # --project
2a98ac44bd 2007-10-02       aku:     # --cache (conversion status, ala config.cache)
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # -o, --output
2a98ac44bd 2007-10-02       aku:     # --dry-run
2a98ac44bd 2007-10-02       aku:     # --trunk-only
2a98ac44bd 2007-10-02       aku:     # --force-branch RE
2a98ac44bd 2007-10-02       aku:     # --force-tag RE
2a98ac44bd 2007-10-02       aku:     # --symbol-transform RE:XX
2a98ac44bd 2007-10-02       aku:     # --exclude
2a98ac44bd 2007-10-02       aku:     # -p, --passes
2a98ac44bd 2007-10-02       aku:     # -v, --verbose
2a98ac44bd 2007-10-02       aku:     # -q, --quiet
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # # ## ### ##### ######## #############
2a98ac44bd 2007-10-02       aku:     ## Public API, Methods
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     typemethod process {arguments} {
2a98ac44bd 2007-10-02       aku: 	# Syntax of arguments: ?option ?value?...? /path/to/cvs/repository
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: 	while {[IsOption arguments -> option]} {
2a98ac44bd 2007-10-02       aku: 	    switch -exact -- $option {
2a98ac44bd 2007-10-02       aku: 		-h            -
2a98ac44bd 2007-10-02       aku: 		--help        PrintHelp
2a98ac44bd 2007-10-02       aku: 		--help-passes PrintHelpPasses
2a98ac44bd 2007-10-02       aku: 		--version     PrintVersion
2a98ac44bd 2007-10-02       aku: 		--project     {
2a98ac44bd 2007-10-02       aku: 		    #cvs::repository addproject [Value arguments]
2a98ac44bd 2007-10-02       aku: 		}
2a98ac44bd 2007-10-02       aku: 		--cache       {
2a98ac44bd 2007-10-02       aku: 		    # [Value arguments]
2a98ac44bd 2007-10-02       aku: 		}
2a98ac44bd 2007-10-02       aku: 		default {
2a98ac44bd 2007-10-02       aku: 		    Usage $badoption$option\n$gethelp
2a98ac44bd 2007-10-02       aku: 		}
2a98ac44bd 2007-10-02       aku: 	    }
2a98ac44bd 2007-10-02       aku: 	}
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: 	if {[llength $arguments] > 1} Usage
2a98ac44bd 2007-10-02       aku: 	if {[llength $arguments] < 1} { Usage $nocvs }
2a98ac44bd 2007-10-02       aku: 	#cvs::repository setbase [lindex $arguments 0]
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: 	Validate
2a98ac44bd 2007-10-02       aku: 	return
2a98ac44bd 2007-10-02       aku:     }
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # # ## ### ##### ######## #############
d57b7b4a05 2007-10-02       aku:     ## Internal methods, printing information.
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     proc PrintHelp {} {
d57b7b4a05 2007-10-02       aku: 	global argv0
d57b7b4a05 2007-10-02       aku: 	trouble info "Usage: $argv0 $usage"
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	trouble info "  Information options"
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	trouble info "    -h, --help    Print this message and exit with success"
d57b7b4a05 2007-10-02       aku: 	trouble info "    --help-passes Print list of passes and exit with success"
d57b7b4a05 2007-10-02       aku: 	trouble info "    --version     Print version number of $argv0"
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	# --project, --cache
d57b7b4a05 2007-10-02       aku: 	# ...
d57b7b4a05 2007-10-02       aku: 	exit 0
d57b7b4a05 2007-10-02       aku:     }
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     proc PrintHelpPasses {} {
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	trouble info "Conversion passes:"
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	set n 0
d57b7b4a05 2007-10-02       aku: 	foreach {p desc} {
d57b7b4a05 2007-10-02       aku: 	    CollectAr  {Collect archives}
d57b7b4a05 2007-10-02       aku: 	    CollectRev {Collect revisions}
d57b7b4a05 2007-10-02       aku: 	} { trouble info "  [format %2d $n]: $p $desc" ; incr n }
d57b7b4a05 2007-10-02       aku: 	trouble info ""
d57b7b4a05 2007-10-02       aku: 	exit 0
d57b7b4a05 2007-10-02       aku:     }
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     proc PrintVersion {} {
d57b7b4a05 2007-10-02       aku: 	global argv0
d57b7b4a05 2007-10-02       aku: 	set v [package require vc::fossil::import::cvs]
d57b7b4a05 2007-10-02       aku: 	trouble info "$argv0 v$v"
d57b7b4a05 2007-10-02       aku: 	exit 0
d57b7b4a05 2007-10-02       aku:     }
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     proc Usage {{text {}}} {
d57b7b4a05 2007-10-02       aku: 	global argv0
d57b7b4a05 2007-10-02       aku: 	if {$text ne ""} {set text \n$text}
d57b7b4a05 2007-10-02       aku: 	trouble fatal "Usage: $argv0 $usage$text"
d57b7b4a05 2007-10-02       aku: 	# Not reached
d57b7b4a05 2007-10-02       aku: 	return
d57b7b4a05 2007-10-02       aku:     }
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     # # ## ### ##### ######## #############
d57b7b4a05 2007-10-02       aku:     ## Internal methods, command line processing
2a98ac44bd 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     typevariable usage     "?option ?value?...? cvs-repository-path"
2a98ac44bd 2007-10-02       aku:     typevariable nocvs     "       The cvs-repository-path is missing."
2a98ac44bd 2007-10-02       aku:     typevariable badoption "       Bad option "
2a98ac44bd 2007-10-02       aku:     typevariable gethelp   "       Use --help to get help."
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     proc IsOption {av _ ov} {
2a98ac44bd 2007-10-02       aku: 	upvar 1 $av arguments $ov option
2a98ac44bd 2007-10-02       aku: 	set candidate [lindex $arguments 0]
2a98ac44bd 2007-10-02       aku: 	if {![string match -* $candidate]} {return 0}
2a98ac44bd 2007-10-02       aku: 	set option    $candidate
2a98ac44bd 2007-10-02       aku: 	set arguments [lrange $arguments 1 end]
2a98ac44bd 2007-10-02       aku: 	return 1
2a98ac44bd 2007-10-02       aku:     }
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     proc Value {av} {
2a98ac44bd 2007-10-02       aku: 	upvar 1 $av arguments
2a98ac44bd 2007-10-02       aku: 	set v         [lindex $arguments 0]
2a98ac44bd 2007-10-02       aku: 	set arguments [lrange $arguments 1 end]
2a98ac44bd 2007-10-02       aku: 	return $v
2a98ac44bd 2007-10-02       aku:     }
2a98ac44bd 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku:     # # ## ### ##### ######## #############
d57b7b4a05 2007-10-02       aku:     ## Internal methods, state validation
d57b7b4a05 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     proc Validate {} {
2a98ac44bd 2007-10-02       aku: 	return
2a98ac44bd 2007-10-02       aku:     }
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # # ## ### ##### ######## #############
2a98ac44bd 2007-10-02       aku:     ## Configuration
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     pragma -hasinstances   no ; # singleton
2a98ac44bd 2007-10-02       aku:     pragma -hastypeinfo    no ; # no introspection
2a98ac44bd 2007-10-02       aku:     pragma -hastypedestroy no ; # immortal
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # # ## ### ##### ######## #############
d57b7b4a05 2007-10-02       aku: }
d57b7b4a05 2007-10-02       aku: 
d57b7b4a05 2007-10-02       aku: namespace eval ::vc::fossil::import::cvs::option {
d57b7b4a05 2007-10-02       aku:     namespace import ::vc::tools::trouble
2a98ac44bd 2007-10-02       aku: }
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: # # ## ### ##### ######## ############# #####################
2a98ac44bd 2007-10-02       aku: ## Ready
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku: package provide vc::fossil::import::cvs::option 1.0
2a98ac44bd 2007-10-02       aku: return