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: 
47740cc1f6 2007-10-03       aku: package require Tcl 8.4                               ; # Required runtime.
47740cc1f6 2007-10-03       aku: package require snit                                  ; # OO system.
47740cc1f6 2007-10-03       aku: package require vc::tools::trouble                    ; # Error reporting.
2929a438ef 2007-10-04       aku: package require vc::tools::log                        ; # User feedback.
9f3fd3ec4b 2007-10-23       aku: package require vc::tools::misc                       ; # Misc. path reformatting.
47740cc1f6 2007-10-03       aku: package require vc::fossil::import::cvs::pass         ; # Pass management
47740cc1f6 2007-10-03       aku: package require vc::fossil::import::cvs::pass::collar ; # Pass I.
47740cc1f6 2007-10-03       aku: package require vc::fossil::import::cvs::repository   ; # Repository management
eb656de7d9 2007-10-05       aku: package require vc::fossil::import::cvs::state        ; # State storage
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
5911515322 2007-10-02       aku:     # -p, --pass, --passes
47740cc1f6 2007-10-03       aku:     # --ignore-conflicting-attics
2a98ac44bd 2007-10-02       aku:     # --project
2929a438ef 2007-10-04       aku:     # -v, --verbose
2929a438ef 2007-10-04       aku:     # -q, --quiet
eb656de7d9 2007-10-05       aku:     # --state (conversion status, ala config.cache)
3bde1a2e2f 2007-10-17       aku:     # --trunk-only
2a98ac44bd 2007-10-02       aku: 
2a98ac44bd 2007-10-02       aku:     # -o, --output
2a98ac44bd 2007-10-02       aku:     # --dry-run
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: 
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 {
eb656de7d9 2007-10-05       aku: 		-h                          -
eb656de7d9 2007-10-05       aku: 		--help                      { PrintHelp    ; exit 0 }
eb656de7d9 2007-10-05       aku: 		--help-passes               { pass help    ; exit 0 }
eb656de7d9 2007-10-05       aku: 		--version                   { PrintVersion ; exit 0 }
2929a438ef 2007-10-04       aku: 		-p                          -
2929a438ef 2007-10-04       aku: 		--pass                      -
2929a438ef 2007-10-04       aku: 		--passes                    { pass select [Value arguments] }
2929a438ef 2007-10-04       aku: 		--ignore-conflicting-attics { collar ignore_conflicting_attics }
eb656de7d9 2007-10-05       aku: 		--project                   { repository add [Value arguments] }
eb656de7d9 2007-10-05       aku: 		-v                          -
eb656de7d9 2007-10-05       aku: 		--verbose                   { log verbose }
eb656de7d9 2007-10-05       aku: 		-q                          -
eb656de7d9 2007-10-05       aku: 		--quiet                     { log quiet }
eb656de7d9 2007-10-05       aku: 		--state                     { state use [Value arguments] }
3bde1a2e2f 2007-10-17       aku: 		--trunk-only                { repository trunkonly! }
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 }
9f3fd3ec4b 2007-10-23       aku: 	repository base [striptrailingslash [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"
eb656de7d9 2007-10-05       aku: 	trouble info "    -v, --verbose Increase application's verbosity"
eb656de7d9 2007-10-05       aku: 	trouble info "    -q, --quiet   Decrease application's verbosity"
5911515322 2007-10-02       aku: 	trouble info ""
5911515322 2007-10-02       aku: 	trouble info "  Conversion control options"
5911515322 2007-10-02       aku: 	trouble info ""
5911515322 2007-10-02       aku: 	trouble info "    -p, --pass PASS            Run only the specified conversion pass"
5911515322 2007-10-02       aku: 	trouble info "    -p, --passes ?START?:?END? Run only the passes START through END,"
5911515322 2007-10-02       aku: 	trouble info "                               inclusive."
5911515322 2007-10-02       aku: 	trouble info ""
5911515322 2007-10-02       aku: 	trouble info "                               Passes are specified by name."
5911515322 2007-10-02       aku: 	trouble info ""
47740cc1f6 2007-10-03       aku: 	trouble info "    --ignore-conflicting-attics"
47740cc1f6 2007-10-03       aku: 	trouble info "                               Prevent abort when conflicting archives"
47740cc1f6 2007-10-03       aku: 	trouble info "                               were found in both regular and Attic."
eb656de7d9 2007-10-05       aku: 	trouble info ""
eb656de7d9 2007-10-05       aku: 	trouble info "    --state PATH               Save state to the specified file, and"
eb656de7d9 2007-10-05       aku: 	trouble info "                               load state of previous runs from it too."
d57b7b4a05 2007-10-02       aku: 	trouble info ""
47740cc1f6 2007-10-03       aku: 
d57b7b4a05 2007-10-02       aku: 	# --project, --cache
d57b7b4a05 2007-10-02       aku: 	# ...
5911515322 2007-10-02       aku: 	return
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"
5911515322 2007-10-02       aku: 	return
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
5911515322 2007-10-02       aku: 	trouble fatal "Usage: $argv0 $usage"
5911515322 2007-10-02       aku: 	if {$text ne ""} { trouble fatal "$text" }
5911515322 2007-10-02       aku: 	exit 1
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
d57b7b4a05 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 {} {
5911515322 2007-10-02       aku: 	# Prevent in-depth validation if the options were already bad.
5911515322 2007-10-02       aku: 	trouble abort?
5911515322 2007-10-02       aku: 
47740cc1f6 2007-10-03       aku: 	repository validate
eb656de7d9 2007-10-05       aku: 	state      setup
2a98ac44bd 2007-10-02       aku: 
5911515322 2007-10-02       aku: 	trouble abort?
d57b7b4a05 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: 
47740cc1f6 2007-10-03       aku: namespace eval ::vc::fossil::import::cvs {
47740cc1f6 2007-10-03       aku:     namespace export option
47740cc1f6 2007-10-03       aku:     namespace eval option {
47740cc1f6 2007-10-03       aku: 	namespace import ::vc::tools::trouble
2929a438ef 2007-10-04       aku: 	namespace import ::vc::tools::log
9f3fd3ec4b 2007-10-23       aku: 	namespace import ::vc::tools::misc::striptrailingslash
47740cc1f6 2007-10-03       aku: 	namespace import ::vc::fossil::import::cvs::pass
47740cc1f6 2007-10-03       aku: 	namespace import ::vc::fossil::import::cvs::pass::collar
47740cc1f6 2007-10-03       aku: 	namespace import ::vc::fossil::import::cvs::repository
eb656de7d9 2007-10-05       aku: 	namespace import ::vc::fossil::import::cvs::state
47740cc1f6 2007-10-03       aku:     }
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