15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
## other pieces of the system and handled there, via option
## delegation
# # ## ### ##### ######## ############# #####################
## Requirements
package require Tcl 8.4 ; # Required runtime.
package require snit ; # OO system
# # ## ### ##### ######## ############# #####################
##
snit::type ::vc::fossil::import::cvs::option {
# # ## ### ##### ######## #############
## Public API, Options.
|
|
>
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
## other pieces of the system and handled there, via option
## delegation
# # ## ### ##### ######## ############# #####################
## Requirements
package require Tcl 8.4 ; # Required runtime.
package require snit ; # OO system.
package require vc::tools::trouble ; # Error reporting.
# # ## ### ##### ######## ############# #####################
##
snit::type ::vc::fossil::import::cvs::option {
# # ## ### ##### ######## #############
## Public API, Options.
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#cvs::repository setbase [lindex $arguments 0]
Validate
return
}
# # ## ### ##### ######## #############
## Internal methods and state
typevariable nocvs " The cvs-repository-path is missing."
typevariable badoption " Bad option "
typevariable gethelp " Use --help to get help."
proc IsOption {av _ ov} {
upvar 1 $av arguments $ov option
set candidate [lindex $arguments 0]
if {![string match -* $candidate]} {return 0}
set option $candidate
set arguments [lrange $arguments 1 end]
return 1
}
proc Value {av} {
upvar 1 $av arguments
set v [lindex $arguments 0]
set arguments [lrange $arguments 1 end]
return $v
}
proc Validate {} {
return
}
proc Usage {{text {}}} {
global argv0
if {$text ne ""} {set text \n$text}
#trouble fatal "Usage: $argv0 ?option ?value?...? cvs-repository-path$text"
puts "Usage: $argv0 ?option ?value?...? cvs-repository-path$text"
exit 1
}
# # ## ### ##### ######## #############
## Configuration
pragma -hasinstances no ; # singleton
pragma -hastypeinfo no ; # no introspection
pragma -hastypedestroy no ; # immortal
# # ## ### ##### ######## #############
}
# # ## ### ##### ######## ############# #####################
## Ready
package provide vc::fossil::import::cvs::option 1.0
return
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
<
<
<
<
<
<
<
<
>
>
>
>
|
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
#cvs::repository setbase [lindex $arguments 0]
Validate
return
}
# # ## ### ##### ######## #############
## Internal methods, printing information.
proc PrintHelp {} {
global argv0
trouble info "Usage: $argv0 $usage"
trouble info ""
trouble info " Information options"
trouble info ""
trouble info " -h, --help Print this message and exit with success"
trouble info " --help-passes Print list of passes and exit with success"
trouble info " --version Print version number of $argv0"
trouble info ""
# --project, --cache
# ...
exit 0
}
proc PrintHelpPasses {} {
trouble info ""
trouble info "Conversion passes:"
trouble info ""
set n 0
foreach {p desc} {
CollectAr {Collect archives}
CollectRev {Collect revisions}
} { trouble info " [format %2d $n]: $p $desc" ; incr n }
trouble info ""
exit 0
}
proc PrintVersion {} {
global argv0
set v [package require vc::fossil::import::cvs]
trouble info "$argv0 v$v"
exit 0
}
proc Usage {{text {}}} {
global argv0
if {$text ne ""} {set text \n$text}
trouble fatal "Usage: $argv0 $usage$text"
# Not reached
return
}
# # ## ### ##### ######## #############
## Internal methods, command line processing
typevariable usage "?option ?value?...? cvs-repository-path"
typevariable nocvs " The cvs-repository-path is missing."
typevariable badoption " Bad option "
typevariable gethelp " Use --help to get help."
proc IsOption {av _ ov} {
upvar 1 $av arguments $ov option
set candidate [lindex $arguments 0]
if {![string match -* $candidate]} {return 0}
set option $candidate
set arguments [lrange $arguments 1 end]
return 1
}
proc Value {av} {
upvar 1 $av arguments
set v [lindex $arguments 0]
set arguments [lrange $arguments 1 end]
return $v
}
# # ## ### ##### ######## #############
## Internal methods, state validation
proc Validate {} {
return
}
# # ## ### ##### ######## #############
## Configuration
pragma -hasinstances no ; # singleton
pragma -hastypeinfo no ; # no introspection
pragma -hastypedestroy no ; # immortal
# # ## ### ##### ######## #############
}
namespace eval ::vc::fossil::import::cvs::option {
namespace import ::vc::tools::trouble
}
# # ## ### ##### ######## ############# #####################
## Ready
package provide vc::fossil::import::cvs::option 1.0
return
|