@@ -1,16 +1,17 @@
1 1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#!/bin/sh
2 2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2006-2011 WorkWare Systems http://www.workware.net.au/
3 3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
4 4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# vim:se syntax=tcl:
5 5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# \
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dir=`dirname "$0"`; exec "`$dir/find-tclsh`" "$0" "$@"
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dir=`dirname "$0"`; exec "`$dir/autosetup-find-tclsh`" "$0" "$@"
7 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set autosetup(version) 0.6.6
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note that the version has a trailing + on unreleased versions
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(version) 0.6.9
9 10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10 11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Can be set to 1 to debug early-init problems
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set autosetup(debug) 0
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(debug) [expr {"--debug" in $argv}]
12 13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13 14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
##################################################################
14 15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
15 16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Main flow of control, option handling
16 17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
@@ -72,14 +73,18 @@
72 73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(cmdline) {}
73 74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# options is a list of known options
74 75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(options) {}
75 76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# optset is a dictionary of option values set by the user based on getopt
76 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(optset) {}
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # optdefault is a dictionary of default values for options
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # optdefault is a dictionary of default values
78 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(optdefault) {}
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # options-defaults is a dictionary of overrides for default values for options
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(options-defaults) {}
79 82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(optionhelp) {}
80 83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(showhelp) 0
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ use util
81 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
82 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Parse options
83 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use getopt
84 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
85 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# At the is point we don't know what is a valid option
@@ -87,15 +92,28 @@
87 92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(getopt) [getopt argv]
88 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
89 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#"=Core Options:"
90 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
options-add {
91 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
help:=local => "display help and options. Optionally specify a module name, such as --help=system"
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ licence license => "display the autosetup license"
92 98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
version => "display the version of autosetup"
93 99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ref:=text manual:=text
94 100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reference:=text => "display the autosetup command reference. 'text', 'wiki', 'asciidoc' or 'markdown'"
95 101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
debug => "display debugging output as autosetup runs"
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- install:=. => "install autosetup to the current or given directory (in the 'autosetup/' subdirectory)"
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ install:=. => "install autosetup to the current or given directory"
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$autosetup(installed)} {
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # hidden options so we can produce a nice error
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ options-add {
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sysinstall:path
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ options-add {
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ sysinstall:path => "install standalone autosetup to the given directory (e.g.: /usr/local)"
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ options-add {
97 115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
force init:=help => "create initial auto.def, etc. Use --init=help for known types"
98 116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Undocumented options
99 117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
option-checking=1
100 118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
nopager
101 119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
quiet
@@ -107,12 +125,12 @@
107 125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $autosetup(version)
108 126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exit 0
109 127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
110 128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
111 129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# autosetup --conf=alternate-auto.def
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[opt-val conf] ne ""} {
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set autosetup(autodef) [opt-val conf]
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str conf o]} {
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(autodef) $o
114 132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
115 133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
116 134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Debugging output (set this early)
117 135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr autosetup(debug) [opt-bool debug]
118 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr autosetup(force) [opt-bool force]
@@ -124,41 +142,50 @@
124 142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[file exists $autosetup(libdir)/local.tcl]} {
125 143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use local
126 144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
127 145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
128 146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Now any auto-load modules
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach file [glob -nocomplain $autosetup(libdir)/*.auto $autosetup(libdir)/*/*.auto] {
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- automf_load source $file
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_load_auto_modules
132 148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[opt-val help] ne ""} {
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str help o]} {
134 150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr autosetup(showhelp)
135 151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use help
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_help [opt-val help]
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_help $o
137 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
138 154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[opt-val {manual ref reference}] ne ""} {
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-bool licence license]} {
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ use help
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_show_license
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ exit 0
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str {manual ref reference} o]} {
140 162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use help
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_reference [opt-val {manual ref reference}]
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_reference $o
142 164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
143 165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
144 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Allow combining --install and --init
145 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set earlyexit 0
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[opt-val install] ne ""} {
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str install o]} {
147 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use install
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_install [opt-val install]
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install $o
149 171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr earlyexit
150 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
151 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[opt-val init] ne ""} {
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str init o]} {
153 175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use init
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_init [opt-val init]
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_init $o
155 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr earlyexit
156 178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
157 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
158 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$earlyexit} {
159 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exit 0
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[opt-str sysinstall o]} {
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ use install
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install $o 1
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ exit 0
160 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
161 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
162 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![file exists $autosetup(autodef)]} {
163 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Check for invalid option first
164 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
options {}
@@ -185,10 +212,11 @@
185 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
define-append AUTOREMAKE [get-define CONFIGURE_OPTS]
186 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
187 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
188 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Log how we were invoked
189 216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
configlog "Invoked as: [getenv WRAPPER $::argv0] [quote-argv $autosetup(argv)]"
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configlog "Tclsh: [info nameofexecutable]"
190 218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
191 219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Note that auto.def is *not* loaded in the global scope
192 220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
source $autosetup(autodef)
193 221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
194 222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Could warn here if options {} was not specified
@@ -210,14 +238,14 @@
210 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
211 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Check each of the named, boolean options and if any have been explicitly enabled
212 240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# or disabled by the user, return 1 or 0 accordingly.
213 241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
214 242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# If the option was specified more than once, the last value wins.
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # e.g. With --enable-foo --disable-foo, [opt-bool foo] will return 0
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # e.g. With '--enable-foo --disable-foo', '[opt-bool foo]' will return 0
216 244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
217 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# If no value was specified by the user, returns the default value for the
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # first option. If -nodefault is given, this behaviour changes and
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # first option. If '-nodefault' is given, this behaviour changes and
219 247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# -1 is returned instead.
220 248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
221 249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc opt-bool {args} {
222 250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set nodefault 0
223 251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[lindex $args 0] eq "-nodefault"} {
@@ -237,20 +265,19 @@
237 265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
238 266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Default value is the default for the first option
239 267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return [dict get $::autosetup(optdefault) [lindex $args 0]]
240 268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
241 269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # @opt-val option-list ?default=""?
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @opt-val optionlist ?default=""?
243 271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Returns a list containing all the values given for the non-boolean options in 'option-list'.
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns a list containing all the values given for the non-boolean options in '$optionlist'.
245 273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# There will be one entry in the list for each option given by the user, including if the
246 274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# same option was used multiple times.
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If only a single value is required, use something like:
248 275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ## lindex [opt-val $names] end
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If no options were set, '$default' is returned (exactly, not as a list).
250 277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If no options were set, $default is returned (exactly, not as a list).
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note: For most use cases, 'opt-str' should be preferred.
252 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
253 280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc opt-val {names {default ""}} {
254 281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
option-check-names {*}$names
255 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
256 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach opt $names {
@@ -261,10 +288,83 @@
261 288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[info exists result]} {
262 289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $result
263 290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
264 291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $default
265 292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @opt-str optionlist varname ?default?
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Sets '$varname' in the callers scope to the value for one of the given options.
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # For the list of options given in '$optionlist', if any value is set for any option,
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the option value is taken to be the *last* value of the last option (in the order given).
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If no option was given, and a default was specified with 'options-defaults',
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # that value is used.
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If no 'options-defaults' value was given and '$default' was given, it is used.
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If none of the above provided a value, no value is set.
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The return value depends on whether '$default' was specified.
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If it was, the option value is returned.
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If it was not, 1 is returns if a value was set, or 0 if not.
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Typical usage is as follows:
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## if {[opt-str {myopt altname} o]} {
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## do something with $o
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## }
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Or:
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## define myname [opt-str {myopt altname} o "/usr/local"]
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc opt-str {names varname args} {
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global autosetup
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ option-check-names {*}$names
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ upvar $varname value
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[llength $args]} {
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A default was given, so always return the string value of the option
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set default [lindex $args 0]
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set retopt 1
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # No default, so return 0 or 1 to indicate if a value was found
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set retopt 0
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach opt $names {
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[dict exists $::autosetup(optset) $opt]} {
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set result [lindex [dict get $::autosetup(optset) $opt] end]
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {![info exists result]} {
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # No user-specified value. Has options-defaults been set?
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach opt $names {
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[dict exists $::autosetup(options-defaults) $opt]} {
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set result [dict get $autosetup(options-defaults) $opt]
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists result]} {
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set value $result
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$retopt} {
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $value
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$retopt} {
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set value $default
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $value
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
266 366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
267 367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc option-check-names {args} {
268 368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach o $args {
269 369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$o ni $::autosetup(options)} {
270 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
autosetup-error "Request for undeclared option --$o"
@@ -293,10 +393,11 @@
293 393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This is a special heading
294 394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend autosetup(optionhelp) $opt ""
295 395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set header {}
296 396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue
297 397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unset -nocomplain defaultvalue equal value
298 399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
299 400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#puts "i=$i, opt=$opt"
300 401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regexp {^([^:=]*)(:)?(=)?(.*)$} $opt -> name colon equal value
301 402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$name in $autosetup(options)} {
302 403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
autosetup-error "Option $name already specified"
@@ -310,10 +411,16 @@
310 411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This is a documentation-only option, like "-C <dir>"
311 412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set opthelp $opt
312 413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} elseif {$colon eq ""} {
313 414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Boolean option
314 415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend autosetup(options) $name
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Check for override
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[dict exists $autosetup(options-defaults) $name]} {
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A default was specified with options-defaults, so use it
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set value [dict get $autosetup(options-defaults) $name]
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
315 422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
316 423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$value eq "1"} {
317 424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set opthelp "--disable-$name"
318 425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
319 426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set opthelp "--$name"
@@ -321,11 +428,12 @@
321 428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
322 429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Set the default
323 430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$value eq ""} {
324 431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set value 0
325 432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dict set autosetup(optdefault) $name $value
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set defaultvalue $value
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dict set autosetup(optdefault) $name $defaultvalue
327 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
328 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[dict exists $autosetup(getopt) $name]} {
329 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# The option was specified by the user. Look at the last value.
330 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lassign [lindex [dict get $autosetup(getopt) $name] end] type setvalue
331 439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$type eq "str"} {
@@ -342,19 +450,39 @@
342 450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#puts "Found boolean option --$name=$setvalue"
343 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
344 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
345 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# String option.
346 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend autosetup(options) $name
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$colon eq ":"} {
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Was ":name=default" given?
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If so, set $value to the display name and $defaultvalue to the default
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # (This is the preferred way to set a default value for a string option)
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[regexp {^([^=]+)=(.*)$} $value -> value defaultvalue]} {
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dict set autosetup(optdefault) $name $defaultvalue
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Maybe override the default value
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[dict exists $autosetup(options-defaults) $name]} {
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A default was specified with options-defaults, so use it
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set defaultvalue [dict get $autosetup(options-defaults) $name]
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dict set autosetup(optdefault) $name $defaultvalue
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } elseif {![info exists defaultvalue]} {
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # For backward compatibility, if ":name" was given, use name as both
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the display text and the default value, but only if the user
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # specified the option without the value
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set defaultvalue $value
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
347 476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
348 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$equal eq "="} {
349 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# String option with optional value
350 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set opthelp "--$name?=$value?"
351 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
352 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# String option with required value
353 482 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set opthelp "--$name=$value"
354 483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dict set autosetup(optdefault) $name $value
356 484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
357 485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Get the values specified by the user
358 486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[dict exists $autosetup(getopt) $name]} {
359 487 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set listvalue {}
360 488 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -363,11 +491,11 @@
363 491 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$type eq "bool" && $setvalue} {
364 492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$equal ne "="} {
365 493 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
user-error "Option --$name requires a value"
366 494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
367 495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# If given as a boolean, use the default value
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set setvalue $value
496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set setvalue $defaultvalue
369 497 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
370 498 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend listvalue $setvalue
371 499 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
372 500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
373 501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#puts "Found string option --$name=$listvalue"
@@ -376,10 +504,13 @@
376 504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
377 505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
378 506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Now create the help for this option if appropriate
379 507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[lindex $opts $i+1] eq "=>"} {
380 508 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set desc [lindex $opts $i+2]
509 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists defaultvalue]} {
510 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set desc [string map [list @default@ $defaultvalue] $desc]
511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
381 512 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#string match \n* $desc
382 513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$header ne ""} {
383 514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend autosetup(optionhelp) $header ""
384 515 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set header ""
385 516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -463,35 +594,39 @@
463 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
options-wrap-desc [string trim $desc] $cols " " $indent [expr $max + 2]
464 595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
465 596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
466 597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
467 598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # @options options-spec
599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @options optionspec
469 600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
470 601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Specifies configuration-time options which may be selected by the user
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # and checked with opt-val and opt-bool. The format of options-spec follows.
602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # and checked with 'opt-str' and 'opt-bool'. '$optionspec' contains a series
603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # of options specifications separated by newlines, as follows:
472 604 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
473 605 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# A boolean option is of the form:
474 606 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
475 607 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## name[=0|1] => "Description of this boolean option"
476 608 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # The default is name=0, meaning that the option is disabled by default.
478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If name=1 is used to make the option enabled by default, the description should reflect
609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default is 'name=0', meaning that the option is disabled by default.
610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If 'name=1' is used to make the option enabled by default, the description should reflect
479 611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# that with text like "Disable support for ...".
480 612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
481 613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# An argument option (one which takes a parameter) is of the form:
482 614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
483 615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## name:[=]value => "Description of this option"
484 616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
485 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If the name:value form is used, the value must be provided with the option (as --name=myvalue).
486 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If the name:=value form is used, the value is optional and the given value is used as the default
617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If the 'name:value' form is used, the value must be provided with the option (as '--name=myvalue').
618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If the 'name:=value' form is used, the value is optional and the given value is used as the default
487 619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if it is not provided.
488 620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
489 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Undocumented options are also supported by omitting the "=> description.
490 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # These options are not displayed with --help and can be useful for internal options or as aliases.
621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The description may contain '@default@', in which case it will be replaced with the default
622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # value for the option (taking into account defaults specified with 'options-defaults'.
491 623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # For example, --disable-lfs is an alias for --disable=largefile:
624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Undocumented options are also supported by omitting the '=> description'.
625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # These options are not displayed with '--help' and can be useful for internal options or as aliases.
626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # For example, '--disable-lfs' is an alias for '--disable=largefile':
493 628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
494 629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
## lfs=1 largefile=1 => "Disable large file support"
495 630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
496 631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc options {optlist} {
497 632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Allow options as a list or args
@@ -509,27 +644,37 @@
509 644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
user-error "Unknown option --$o"
510 645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
511 646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
512 647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
513 648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @options-defaults dictionary
651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Specifies a dictionary of options and a new default value for each of those options.
653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Use before any 'use' statements in 'auto.def' to change the defaults for
654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # subsequently included modules.
655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc options-defaults {dict} {
656 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach {n v} $dict {
657 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dict set ::autosetup(options-defaults) $n $v
658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
514 660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
515 661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc config_guess {} {
516 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[file-isexec $::autosetup(dir)/config.guess]} {
517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- exec-with-stderr sh $::autosetup(dir)/config.guess
518 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[catch {exec-with-stderr sh $::autosetup(dir)/config.guess} alias]} {
662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file-isexec $::autosetup(dir)/autosetup-config.guess]} {
663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[catch {exec-with-stderr sh $::autosetup(dir)/autosetup-config.guess} alias]} {
519 664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
user-error $alias
520 665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
521 666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $alias
522 667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- configlog "No config.guess, so using uname"
668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ configlog "No autosetup-config.guess, so using uname"
524 669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
string tolower [exec uname -p]-unknown-[exec uname -s][exec uname -r]
525 670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
526 671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
527 672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
528 673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc config_sub {alias} {
529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[file-isexec $::autosetup(dir)/config.sub]} {
530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[catch {exec-with-stderr sh $::autosetup(dir)/config.sub $alias} alias]} {
674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file-isexec $::autosetup(dir)/autosetup-config.sub]} {
675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[catch {exec-with-stderr sh $::autosetup(dir)/autosetup-config.sub $alias} alias]} {
531 676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
user-error $alias
532 677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
533 678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
534 679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $alias
535 680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -536,39 +681,48 @@
536 681 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
537 682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @define name ?value=1?
538 683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
539 684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Defines the named variable to the given value.
540 685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# These (name, value) pairs represent the results of the configuration check
541 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # and are available to be checked, modified and substituted.
686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # and are available to be subsequently checked, modified and substituted.
542 687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
543 688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc define {name {value 1}} {
544 689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set ::define($name) $value
545 690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#dputs "$name <= $value"
546 691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
547 692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
548 693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @undefine name
549 694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Undefine the named variable
695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Undefine the named variable.
551 696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
552 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc undefine {name} {
553 698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unset -nocomplain ::define($name)
554 699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#dputs "$name <= <undef>"
555 700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
556 701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
557 702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @define-append name value ...
558 703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Appends the given value(s) to the given 'defined' variable.
560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If the variable is not defined or empty, it is set to $value.
704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Appends the given value(s) to the given "defined" variable.
705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If the variable is not defined or empty, it is set to '$value'.
561 706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Otherwise the value is appended, separated by a space.
562 707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Any extra values are similarly appended.
563 708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# If any value is already contained in the variable (as a substring) it is omitted.
564 709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
565 710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc define-append {name args} {
566 711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[get-define $name ""] ne ""} {
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Make a token attempt to avoid duplicates
712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Avoid duplicates
568 713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach arg $args {
569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[string first $arg $::define($name)] == -1} {
714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$arg eq ""} {
715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set found 0
718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach str [split $::define($name) " "] {
719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$str eq $arg} {
720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ incr found
721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {!$found} {
570 724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
append ::define($name) " " $arg
571 725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
572 726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
573 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
574 728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set ::define($name) [join $args]
@@ -576,11 +730,11 @@
576 730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#dputs "$name += [join $args] => $::define($name)"
577 731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
578 732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
579 733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @get-define name ?default=0?
580 734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Returns the current value of the 'defined' variable, or $default
735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns the current value of the "defined" variable, or '$default'
582 736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# if not set.
583 737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
584 738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc get-define {name {default 0}} {
585 739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[info exists ::define($name)]} {
586 740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#dputs "$name => $::define($name)"
@@ -595,14 +749,26 @@
595 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Returns 1 if the given variable is defined.
596 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
597 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc is-defined {name} {
598 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
info exists ::define($name)
599 753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @is-define-set name
756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns 1 if the given variable is defined and is set
758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # to a value other than "" or 0
759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc is-define-set {name} {
761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[get-define $name] in {0 ""}} {
762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0
763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1
765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
600 766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
601 767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @all-defines
602 768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Returns a dictionary (name value list) of all defined variables.
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns a dictionary (name, value list) of all defined variables.
604 770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
605 771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This is suitable for use with 'dict', 'array set' or 'foreach'
606 772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# and allows for arbitrary processing of the defined variables.
607 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
608 774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc all-defines {} {
@@ -610,13 +776,13 @@
610 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
611 777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
612 778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
613 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @get-env name default
614 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If $name was specified on the command line, return it.
616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If $name was set in the environment, return it.
617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Otherwise return $default.
781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If '$name' was specified on the command line, return it.
782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Otherwise if '$name' was set in the environment, return it.
783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Otherwise return '$default'.
618 784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
619 785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc get-env {name default} {
620 786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[dict exists $::autosetup(cmdline) $name]} {
621 787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return [dict get $::autosetup(cmdline) $name]
622 788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -623,11 +789,11 @@
623 789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
getenv $name $default
624 790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
625 791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
626 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @env-is-set name
627 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Returns 1 if the $name was specified on the command line or in the environment.
794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns 1 if '$name' was specified on the command line or in the environment.
629 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Note that an empty environment variable is not considered to be set.
630 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
631 797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc env-is-set {name} {
632 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[dict exists $::autosetup(cmdline) $name]} {
633 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1
@@ -639,11 +805,11 @@
639 805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
640 806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
641 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @readfile filename ?default=""?
642 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
643 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Return the contents of the file, without the trailing newline.
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # If the file doesn't exist or can't be read, returns $default.
810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If the file doesn't exist or can't be read, returns '$default'.
645 811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
646 812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc readfile {filename {default_value ""}} {
647 813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set result $default_value
648 814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
catch {
649 815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set f [open $filename]
@@ -653,11 +819,11 @@
653 819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $result
654 820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
655 821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
656 822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @writefile filename value
657 823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Creates the given file containing $value.
824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Creates the given file containing '$value'.
659 825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Does not add an extra newline.
660 826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
661 827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc writefile {filename value} {
662 828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set f [open $filename w]
663 829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts -nonewline $f $value
@@ -677,63 +843,60 @@
677 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend args [quote-if-needed $arg]
678 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
679 845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
join $args
680 846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
681 847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
682 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # @suffix suf list
683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Takes a list and returns a new list with $suf appended
685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # to each element
686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ## suffix .c {a b c} => {a.c b.c c.c}
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- proc suffix {suf list} {
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @list-non-empty list
849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns a copy of the given list with empty elements removed
851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc list-non-empty {list} {
690 852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set result {}
691 853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach p $list {
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend result $p$suf
854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$p ne ""} {
855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend result $p
856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
693 857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
694 858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $result
695 859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
696 860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # @prefix pre list
698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Takes a list and returns a new list with $pre prepended
700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # to each element
701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ## prefix jim- {a.c b.c} => {jim-a.c jim-b.c}
703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- proc prefix {pre list} {
705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set result {}
706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach p $list {
707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend result $pre$p
708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return $result
861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @find-executable-path name
862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Searches the path for an executable with the given name.
864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note that the name may include some parameters, e.g. 'cc -mbig-endian',
865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # in which case the parameters are ignored.
866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The full path to the executable if found, or "" if not found.
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Returns 1 if found, or 0 if not.
868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc find-executable-path {name} {
870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Ignore any parameters
871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set name [lindex $name 0]
872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The empty string is never a valid executable
873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$name ne ""} {
874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach p [split-path] {
875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "Looking for $name in $p"
876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set exec [file join $p $name]
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file-isexec $exec]} {
878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "Found $name -> $exec"
879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $exec
880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return {}
710 884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
711 885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
712 886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @find-executable name
713 887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
714 888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Searches the path for an executable with the given name.
715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Note that the name may include some parameters, e.g. "cc -mbig-endian",
889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Note that the name may include some parameters, e.g. 'cc -mbig-endian',
716 890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# in which case the parameters are ignored.
717 891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Returns 1 if found, or 0 if not.
718 892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
719 893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc find-executable {name} {
720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Ignore any parameters
721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set name [lindex $name 0]
722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$name eq ""} {
723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # The empty string is never a valid executable
724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0
725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach p [split-path] {
727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dputs "Looking for $name in $p"
728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set exec [file join $p $name]
729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[file-isexec $exec]} {
730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- dputs "Found $name -> $exec"
731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 0
894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[find-executable-path $name] eq {}} {
895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0
896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1
735 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
736 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
737 900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @find-an-executable ?-required? name ...
738 901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
739 902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Given a list of possible executable names,
@@ -764,11 +927,11 @@
764 927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return ""
765 928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
766 929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
767 930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @configlog msg
768 931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Writes the given message to the configuration log, config.log
932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Writes the given message to the configuration log, 'config.log'.
770 933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
771 934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc configlog {msg} {
772 935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![info exists ::autosetup(logfh)]} {
773 936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set ::autosetup(logfh) [open config.log w]
774 937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -800,12 +963,12 @@
800 963 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
801 964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
802 965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
803 966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @msg-quiet command ...
804 967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # msg-quiet evaluates it's arguments as a command with output
806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # from msg-checking and msg-result suppressed.
968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # 'msg-quiet' evaluates it's arguments as a command with output
969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # from 'msg-checking' and 'msg-result' suppressed.
807 970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
808 971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This is useful if a check needs to run a subcheck which isn't
809 972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# of interest to the user.
810 973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc msg-quiet {args} {
811 974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
incr ::autosetup(msg-quiet)
@@ -841,11 +1004,11 @@
841 1004 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
842 1005 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# @user-error msg
843 1006 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
844 1007 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Indicate incorrect usage to the user, including if required components
845 1008 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# or features are not found.
846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # autosetup exits with a non-zero return code.
1009 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # 'autosetup' exits with a non-zero return code.
847 1010 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
848 1011 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc user-error {msg} {
849 1012 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
show-notices
850 1013 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts stderr "Error: $msg"
851 1014 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts stderr "Try: '[file tail $::autosetup(exe)] --help' for options"
@@ -887,10 +1050,21 @@
887 1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc maybe-show-timestamp {} {
888 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$::autosetup(msg-timing) && $::autosetup(msg-checking) == 0} {
889 1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts -nonewline [format {[%6.2f] } [expr {([clock millis] - $::autosetup(start)) % 10000 / 1000.0}]]
890 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
891 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @autosetup-require-version required
1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Checks the current version of 'autosetup' against '$required'.
1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A fatal error is generated if the current version is less than that required.
1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
1061 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup-require-version {required} {
1062 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[compare-versions $::autosetup(version) $required] < 0} {
1063 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ user-error "autosetup version $required is required, but this is $::autosetup(version)"
1064 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1065 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
892 1066 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
893 1067 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc autosetup_version {} {
894 1068 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return "autosetup v$::autosetup(version)"
895 1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
896 1070 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -986,23 +1160,35 @@
986 1160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# The latter form is useful for a complex module which requires additional
987 1161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# support file. In this form, '$::usedir' is set to the module directory
988 1162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# when it is loaded.
989 1163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#
990 1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc use {args} {
1165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global autosetup libmodule modsource
1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dirs [list $autosetup(libdir)]
1168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists autosetup(srcdir)]} {
1169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend dirs $autosetup(srcdir)/autosetup
1170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
991 1171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach m $args {
992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[info exists ::libmodule($m)]} {
1172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists libmodule($m)]} {
993 1173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue
994 1174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set ::libmodule($m) 1
996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[info exists ::modsource($m)]} {
997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- automf_load eval $::modsource($m)
1175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set libmodule($m) 1
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists modsource(${m}.tcl)]} {
1177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ automf_load eval $modsource(${m}.tcl)
998 1178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set sources [list $::autosetup(libdir)/${m}.tcl $::autosetup(libdir)/${m}/init.tcl]
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set locs [list ${m}.tcl ${m}/init.tcl]
1000 1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set found 0
1001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach source $sources {
1002 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[file exists $source]} {
1003 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- incr found
1181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach dir $dirs {
1182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach loc $locs {
1183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set source $dir/$loc
1184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file exists $source]} {
1185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ incr found
1186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break
1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$found} {
1004 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break
1005 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1006 1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1007 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$found} {
1008 1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# For the convenience of the "use" source, point to the directory
@@ -1014,10 +1200,22 @@
1014 1200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
autosetup-error "use: No such module: $m"
1015 1201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1016 1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1017 1203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1018 1204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_load_auto_modules {} {
1207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global autosetup modsource
1208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # First load any embedded auto modules
1209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach mod [array names modsource *.auto] {
1210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ automf_load eval $modsource($mod)
1211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Now any external auto modules
1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach file [glob -nocomplain $autosetup(libdir)/*.auto $autosetup(libdir)/*/*.auto] {
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ automf_load source $file
1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1019 1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1020 1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Load module source in the global scope by executing the given command
1021 1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc automf_load {args} {
1022 1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[catch [list uplevel #0 $args] msg opts] ni {0 2 3}} {
1023 1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
autosetup-full-error [error-dump $msg $opts $::autosetup(debug)]
@@ -1027,18 +1225,21 @@
1027 1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Initial settings
1028 1226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(exe) $::argv0
1029 1227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(istcl) 1
1030 1228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(start) [clock millis]
1031 1229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(installed) 0
1230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(sysinstall) 0
1032 1231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(msg-checking) 0
1033 1232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(msg-quiet) 0
1233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(inittypes) {}
1034 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1035 1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Embedded modules are inserted below here
1036 1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set autosetup(installed) 1
1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module asciidoc-formatting -----
1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set autosetup(sysinstall) 0
1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module asciidoc-formatting.tcl -----
1038 1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(asciidoc-formatting) {
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(asciidoc-formatting.tcl) {
1040 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1041 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1042 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1043 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides text formatting
1044 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# asciidoc format
@@ -1102,19 +1303,19 @@
1102 1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
regsub -all "\n\n" $defn "\n ::\n" defn
1103 1304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $defn
1104 1305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1105 1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1106 1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module formatting -----
1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module formatting.tcl -----
1108 1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(formatting) {
1310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(formatting.tcl) {
1110 1311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1111 1312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1112 1313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1113 1314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides common text formatting
1114 1315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # This is designed for documenation which looks like:
1316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is designed for documentation which looks like:
1116 1317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# code {...}
1117 1318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# or
1118 1319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# code {
1119 1320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# ...
1120 1321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# ...
@@ -1159,13 +1360,13 @@
1159 1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Return the result
1160 1361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $lines
1161 1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1162 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1163 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module getopt -----
1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module getopt.tcl -----
1165 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(getopt) {
1367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(getopt.tcl) {
1167 1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2006 WorkWare Systems http://www.workware.net.au/
1168 1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1169 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1170 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Simple getopt module
1171 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1197,11 +1398,11 @@
1197 1398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1198 1399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[regexp {^--([^=][^=]+)=(.*)$} $arg -> name value]} {
1199 1400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --name=value
1200 1401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dict lappend opts $name [list str $value]
1201 1402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} elseif {[regexp {^--(enable-|disable-)?([^=]*)$} $arg -> prefix name]} {
1202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$prefix in {enable- with- ""}} {
1403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$prefix in {enable- ""}} {
1203 1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set value 1
1204 1405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
1205 1406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set value 0
1206 1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1207 1408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dict lappend opts $name [list bool $value]
@@ -1218,13 +1419,13 @@
1218 1419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1219 1420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return $opts
1220 1421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1221 1422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1222 1423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module help -----
1424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module help.tcl -----
1224 1425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(help) {
1426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(help.tcl) {
1226 1427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://workware.net.au/
1227 1428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1228 1429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1229 1430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides usage, help and the command reference
1230 1431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1251,10 +1452,28 @@
1251 1452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
options-show
1252 1453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1253 1454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1254 1455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exit 0
1255 1456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_show_license {} {
1459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global modsource autosetup
1460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ use_pager
1461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists modsource(LICENSE)]} {
1463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $modsource(LICENSE)
1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
1465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach dir [list $autosetup(libdir) $autosetup(srcdir)] {
1467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set path [file join $dir LICENSE]
1468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file exists $path]} {
1469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts [readfile $path]
1470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
1471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts "LICENSE not found"
1474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1256 1475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1257 1476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# If not already paged and stdout is a tty, pipe the output through the pager
1258 1477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# This is done by reinvoking autosetup with --nopager added
1259 1478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc use_pager {} {
1260 1479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![opt-bool nopager] && [getenv PAGER ""] ne "" && [isatty? stdin] && [isatty? stdout]} {
@@ -1304,10 +1523,16 @@
1304 1523 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1305 1524 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1306 1525 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc autosetup_output_block {type lines} {
1307 1526 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[llength $lines]} {
1308 1527 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
switch $type {
1528 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ section {
1529 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ section $lines
1530 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1531 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ subsection {
1532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ subsection $lines
1533 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1309 1534 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
code {
1310 1535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
codelines $lines
1311 1536 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1312 1537 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p {
1313 1538 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
p [join $lines]
@@ -1325,30 +1550,45 @@
1325 1550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Generate a command reference from inline documentation
1326 1551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc automf_command_reference {} {
1327 1552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend files $::autosetup(prog)
1328 1553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend files {*}[lsort [glob -nocomplain $::autosetup(libdir)/*.tcl]]
1329 1554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- section "Core Commands"
1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set type p
1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set lines {}
1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set cmd {}
1555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # We want to process all non-module files before module files
1556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # and then modules in alphabetical order.
1557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # So examine all files and extract docs into doc($modulename) and doc(_core_)
1558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
1559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Each entry is a list of {type data} where $type is one of: section, subsection, code, list, p
1560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # and $data is a string for section, subsection or a list of text lines for other types.
1561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # XXX: Should commands be in alphabetical order too? Currently they are in file order.
1563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set doc(_core_) {}
1565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend doc(_core_) [list section "Core Commands"]
1334 1566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1335 1567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach file $files {
1568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modulename [file rootname [file tail $file]]
1569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set current _core_
1336 1570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set f [open $file]
1337 1571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while {![eof $f]} {
1338 1572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set line [gets $f]
1573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Find embedded module names
1575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[regexp {^#.*@module ([^ ]*)} $line -> modulename]} {
1576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
1577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1339 1578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1340 1579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Find lines starting with "# @*" and continuing through the remaining comment lines
1341 1580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![regexp {^# @(.*)} $line -> cmd]} {
1342 1581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue
1343 1582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1344 1583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1345 1584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Synopsis or command?
1346 1585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$cmd eq "synopsis:"} {
1347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- section "Module: [file rootname [file tail $file]]"
1586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set current $modulename
1587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend doc($current) [list section "Module: $modulename"]
1348 1588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
1349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- subsection $cmd
1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend doc($current) [list subsection $cmd]
1350 1590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1351 1591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1352 1592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set lines {}
1353 1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set type p
1354 1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1369,29 +1609,38 @@
1369 1609 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1370 1610 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#puts "hash=$hash, oldhash=$oldhash, lines=[llength $lines], cmd=$cmd"
1371 1611 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1372 1612 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$t ne $type || $cmd eq ""} {
1373 1613 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Finish the current block
1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_output_block $type $lines
1614 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend doc($current) [list $type $lines]
1375 1615 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set lines {}
1376 1616 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set type $t
1377 1617 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1378 1618 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$cmd ne ""} {
1379 1619 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
lappend lines $cmd
1380 1620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1381 1621 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1382 1622 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_output_block $type $lines
1623 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend doc($current) [list $type $lines]
1384 1624 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1385 1625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
close $f
1386 1626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Now format and output the results
1629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # _core_ will sort first
1631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach module [lsort [array names doc]] {
1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach item $doc($module) {
1633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_output_block {*}$item
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1387 1636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1388 1637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1389 1638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module init -----
1639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module init.tcl -----
1391 1640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(init) {
1641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(init.tcl) {
1393 1642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1394 1643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1395 1644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1396 1645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module to help create auto.def and configure
1397 1646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1444,79 +1693,157 @@
1444 1693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1445 1694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
writefile $filename $contents
1446 1695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1447 1696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1448 1697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module install -----
1698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module install.tcl -----
1450 1699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(install) {
1700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(install.tcl) {
1452 1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2006-2010 WorkWare Systems http://www.workware.net.au/
1453 1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1454 1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1455 1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which can install autosetup
1456 1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- proc autosetup_install {dir} {
1458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[catch {
1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # autosetup(installed)=1 means that autosetup is not running from source
1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # autosetup(sysinstall)=1 means that autosetup is running from a sysinstall version
1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # shared=1 means that we are trying to do a sysinstall. This is only possible from the development source.
1709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_install {dir {shared 0}} {
1711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ global autosetup
1712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$shared} {
1713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$autosetup(installed) || $autosetup(sysinstall)} {
1714 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ user-error "Can only --sysinstall from development sources"
1715 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1716 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } elseif {$autosetup(installed) && !$autosetup(sysinstall)} {
1717 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ user-error "Can't --install from project install"
1718 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1719 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1720 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$autosetup(sysinstall)} {
1721 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # This is the sysinstall version, so install just uses references
1459 1722 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cd $dir
1723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts "[autosetup_version] creating configure to use system-installed autosetup"
1725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_create_configure 1
1726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts "Creating autosetup/README.autosetup"
1460 1727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file mkdir autosetup
1728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install_readme autosetup/README.autosetup 1
1729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
1730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[catch {
1733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$shared} {
1734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set target $dir/bin/autosetup
1735 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set installedas $target
1736 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1737 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$dir eq "."} {
1738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set installedas autosetup
1739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set installedas $dir/autosetup
1741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cd $dir
1743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file mkdir autosetup
1744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set target autosetup/autosetup
1745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set targetdir [file dirname $target]
1747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file mkdir $targetdir
1461 1748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set f [open autosetup/autosetup w]
1749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set f [open $target w]
1463 1750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set publicmodules [glob $::autosetup(libdir)/*.auto]
1751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set publicmodules {}
1465 1752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1466 1753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# First the main script, but only up until "CUT HERE"
1467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set in [open $::autosetup(dir)/autosetup]
1754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set in [open $autosetup(dir)/autosetup]
1468 1755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while {[gets $in buf] >= 0} {
1469 1756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$buf ne "##-- CUT HERE --##"} {
1470 1757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f $buf
1471 1758 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue
1472 1759 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1473 1760 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1474 1761 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Insert the static modules here
1475 1762 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# i.e. those which don't contain @synopsis:
1763 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # All modules are inserted if $shared is set
1476 1764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f "set autosetup(installed) 1"
1477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach file [lsort [glob $::autosetup(libdir)/*.tcl]] {
1765 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $f "set autosetup(sysinstall) $shared"
1766 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach file [lsort [glob $autosetup(libdir)/*.{tcl,auto}]] {
1767 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modname [file tail $file]
1768 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set ext [file ext $modname]
1478 1769 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set buf [readfile $file]
1479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[string match "*\n# @synopsis:*" $buf]} {
1480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- lappend publicmodules $file
1481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue
1770 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {!$shared} {
1771 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$ext eq ".auto" || [string match "*\n# @synopsis:*" $buf]} {
1772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend publicmodules $file
1773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
1774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1482 1775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1483 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modname [file rootname [file tail $file]]
1484 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts $f "# ----- module $modname -----"
1776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "install: importing lib/[file tail $file]"
1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $f "# ----- @module $modname -----"
1485 1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f "\nset modsource($modname) \{"
1486 1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f $buf
1487 1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f "\}\n"
1488 1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$shared} {
1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach {srcname destname} [list $autosetup(libdir)/README.autosetup-lib README.autosetup \
1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $autosetup(srcdir)/LICENSE LICENSE] {
1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "install: importing $srcname as $destname"
1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $f "\nset modsource($destname) \\\n[list [readfile $srcname]\n]\n"
1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1489 1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1490 1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
close $in
1491 1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
close $f
1492 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- exec chmod 755 autosetup/autosetup
1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ catch {exec chmod 755 $target}
1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set installfiles {autosetup-config.guess autosetup-config.sub autosetup-test-tclsh}
1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set removefiles {}
1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {!$shared} {
1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install_readme $targetdir/README.autosetup 0
1493 1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1494 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Install public modules
1495 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach file $publicmodules {
1496 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_install_file $file autosetup
1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Install public modules
1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach file $publicmodules {
1802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set tail [file tail $file]
1803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install_file $file $targetdir/$tail
1804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend installfiles jimsh0.c autosetup-find-tclsh LICENSE
1806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend removefiles config.guess config.sub test-tclsh find-tclsh
1807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend installfiles {sys-find-tclsh autosetup-find-tclsh}
1497 1809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1498 1810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1499 1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Install support files
1500 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach file {config.guess config.sub jimsh0.c find-tclsh test-tclsh LICENSE} {
1501 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_install_file $::autosetup(dir)/$file autosetup
1502 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1503 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- exec chmod 755 autosetup/config.sub autosetup/config.guess autosetup/find-tclsh
1504 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1505 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- writefile autosetup/README.autosetup \
1506 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- "This is [autosetup_version]. See http://msteveb.github.com/autosetup/\n"
1507 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach fileinfo $installfiles {
1813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[llength $fileinfo] == 2} {
1814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lassign $fileinfo source dest
1815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lassign $fileinfo source
1817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dest $source
1818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_install_file $autosetup(dir)/$source $targetdir/$dest
1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Remove obsolete files
1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach file $removefiles {
1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[file exists $targetdir/$file]} {
1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file delete $targetdir/$file
1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1508 1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} error]} {
1509 1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
user-error "Failed to install autosetup: $error"
1510 1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1511 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts "Installed [autosetup_version] to autosetup/"
1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$shared} {
1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set type "system"
1833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set type "local"
1835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts "Installed $type [autosetup_version] to $installedas"
1512 1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1513 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Now create 'configure' if necessary
1514 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup_create_configure
1838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {!$shared} {
1839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Now create 'configure' if necessary
1840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup_create_configure 0
1841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1515 1842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1516 1843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1517 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- proc autosetup_create_configure {} {
1844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_create_configure {shared} {
1518 1845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[file exists configure]} {
1519 1846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {!$::autosetup(force)} {
1520 1847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Could this be an autosetup configure?
1521 1848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {![string match "*\nWRAPPER=*" [readfile configure]]} {
1522 1849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts "I see configure, but not created by autosetup, so I won't overwrite it."
@@ -1527,40 +1854,75 @@
1527 1854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts "I will overwrite the existing configure because you used --force."
1528 1855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1529 1856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} else {
1530 1857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts "I don't see configure, so I will create it."
1531 1858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1532 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- writefile configure \
1859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$shared} {
1860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ writefile configure \
1861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {#!/bin/sh
1862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WRAPPER="$0"; export WRAPPER; "autosetup" "$@"
1863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ writefile configure \
1533 1866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
{#!/bin/sh
1534 1867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dir="`dirname "$0"`/autosetup"
1535 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- WRAPPER="$0"; export WRAPPER; exec "`$dir/find-tclsh`" "$dir/autosetup" "$@"
1868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WRAPPER="$0"; export WRAPPER; exec "`"$dir/autosetup-find-tclsh"`" "$dir/autosetup" "$@"
1536 1869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1537 1871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
catch {exec chmod 755 configure}
1538 1872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1539 1873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1540 1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Append the contents of $file to filehandle $f
1541 1875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc autosetup_install_append {f file} {
1876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "install: include $file"
1542 1877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
set in [open $file]
1543 1878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts $f [read $in]
1544 1879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
close $in
1545 1880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1546 1881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1547 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- proc autosetup_install_file {file dir} {
1548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {![file exists $file]} {
1549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- error "Missing installation file '$file'"
1550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- writefile [file join $dir [file tail $file]] [readfile $file]\n
1552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$::autosetup(installed)} {
1555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- user-error "autosetup can only be installed from development source, not from installed copy"
1882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_install_file {source target} {
1883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "install: $source => $target"
1884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {![file exists $source]} {
1885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ error "Missing installation file '$source'"
1886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ writefile $target [readfile $source]\n
1888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If possible, copy the file mode
1889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file stat $source stat
1890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set mode [format %o [expr {$stat(mode) & 0x1ff}]]
1891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ catch {exec chmod $mode $target}
1892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc autosetup_install_readme {target sysinstall} {
1895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set readme "README.autosetup created by [autosetup_version]\n\n"
1896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$sysinstall} {
1897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ append readme \
1898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {This is the autosetup directory for a system install of autosetup.
1899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Loadable modules can be added here.
1900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
1902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ append readme \
1903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ {This is the autosetup directory for a local install of autosetup.
1904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ It contains autosetup, support files and loadable modules.
1905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1908 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ append readme {
1909 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *.tcl files in this directory are optional modules which
1910 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ can be loaded with the 'use' directive.
1911 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *.auto files in this directory are auto-loaded.
1913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ For more information, see http://msteveb.github.com/autosetup/
1915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dputs "install: autosetup/README.autosetup"
1917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ writefile $target $readme
1556 1918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1557 1919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1558 1920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module markdown-formatting -----
1921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module markdown-formatting.tcl -----
1560 1922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1561 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(markdown-formatting) {
1923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(markdown-formatting.tcl) {
1562 1924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1563 1925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1564 1926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1565 1927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides text formatting
1566 1928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# markdown format (kramdown syntax)
@@ -1627,13 +1989,13 @@
1627 1989 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1628 1990 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts "$defn"
1629 1991 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1630 1992 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1631 1993 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module misc -----
1994 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module misc.tcl -----
1633 1995 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(misc) {
1996 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(misc.tcl) {
1635 1997 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2007-2010 WorkWare Systems http://www.workware.net.au/
1636 1998 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1637 1999 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1638 2000 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module containing misc procs useful to modules
1639 2001 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Largely for platform compatibility
@@ -1805,106 +2167,218 @@
1805 2167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
string trim $result
1806 2168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1807 2169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1808 2170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1809 2171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module text-formatting -----
2172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module text-formatting.tcl -----
1811 2173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(text-formatting) {
2174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(text-formatting.tcl) {
1813 2175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1814 2176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1815 2177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1816 2178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides text formatting
1817 2179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1818 2180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
use formatting
1819 2181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1820 2182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc wordwrap {text length {firstprefix ""} {nextprefix ""}} {
1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set len 0
1822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set space $firstprefix
1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach word [split $text] {
1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set word [string trim $word]
1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$word == ""} {
1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- continue
1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$len && [string length $space$word] + $len >= $length} {
1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts ""
1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set len 0
1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set space $nextprefix
1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- incr len [string length $space$word]
1834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
-
1835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Use man-page conventions for highlighting 'quoted' and *quoted*
1836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # single words.
1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Use x^Hx for *bold* and _^Hx for 'underline'.
1838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #
1839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # less and more will both understand this.
1840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # Pipe through 'col -b' to remove them.
1841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {[regexp {^'(.*)'([^a-zA-Z0-9_]*)$} $word -> bareword dot]} {
1842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regsub -all . $bareword "_\b&" word
1843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- append word $dot
1844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- } elseif {[regexp {^[*](.*)[*]([^a-zA-Z0-9_]*)$} $word -> bareword dot]} {
1845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regsub -all . $bareword "&\b&" word
1846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- append word $dot
1847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts -nonewline $space$word
1849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set space " "
1850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$len} {
1852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts ""
1853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set len 0
2184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set space $firstprefix
2185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach word [split $text] {
2187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set word [string trim $word]
2188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$word eq ""} {
2189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
2190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists partial]} {
2192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ append partial " " $word
2193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[string first $quote $word] < 0} {
2194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Haven't found end of quoted word
2195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
2196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Finished quoted word
2198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set word $partial
2199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unset partial
2200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ unset quote
2201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
2202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set quote [string index $word 0]
2203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$quote in {' *}} {
2204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[string first $quote $word 1] < 0} {
2205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Haven't found end of quoted word
2206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Not a whole word.
2207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set first [string index $word 0]
2208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Start of quoted word
2209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set partial $word
2210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue
2211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$len && [string length $space$word] + $len >= $length} {
2216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts ""
2217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set len 0
2218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set space $nextprefix
2219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ incr len [string length $space$word]
2221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Use man-page conventions for highlighting 'quoted' and *quoted*
2223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # single words.
2224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Use x^Hx for *bold* and _^Hx for 'underline'.
2225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # less and more will both understand this.
2227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Pipe through 'col -b' to remove them.
2228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[regexp {^'(.*)'(.*)} $word -> quoted after]} {
2229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set quoted [string map {~ " "} $quoted]
2230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regsub -all . $quoted "&\b&" quoted
2231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set word $quoted$after
2232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } elseif {[regexp {^[*](.*)[*](.*)} $word -> quoted after]} {
2233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set quoted [string map {~ " "} $quoted]
2234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regsub -all . $quoted "_\b&" quoted
2235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set word $quoted$after
2236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts -nonewline $space$word
2238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set space " "
2239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists partial]} {
2241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Missing end of quote
2242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts -nonewline $space$partial
2243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$len} {
2245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts ""
2246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1854 2247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1855 2248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc title {text} {
1856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- underline [string trim $text] =
1857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nl
2249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ underline [string trim $text] =
2250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nl
1858 2251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1859 2252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc p {text} {
1860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wordwrap $text 80
1861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nl
2253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wordwrap $text 80
2254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nl
1862 2255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1863 2256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc codelines {lines} {
1864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach line $lines {
1865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts " $line"
1866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nl
2257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach line $lines {
2258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts " $line"
2259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nl
1868 2261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1869 2262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc nl {} {
1870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts ""
2263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts ""
1871 2264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1872 2265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc underline {text char} {
1873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- regexp "^(\[ \t\]*)(.*)" $text -> indent words
1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts $text
1875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- puts $indent[string repeat $char [string length $words]]
2266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ regexp "^(\[ \t\]*)(.*)" $text -> indent words
2267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $text
2268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ puts $indent[string repeat $char [string length $words]]
1876 2269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1877 2270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc section {text} {
1878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- underline "[string trim $text]" -
1879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nl
2271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ underline "[string trim $text]" -
2272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nl
1880 2273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1881 2274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc subsection {text} {
1882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- underline "$text" ~
1883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- nl
2275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ underline "$text" ~
2276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nl
1884 2277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1885 2278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc bullet {text} {
1886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wordwrap $text 76 " * " " "
2279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wordwrap $text 76 " * " " "
1887 2280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1888 2281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc indent {text} {
1889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- wordwrap $text 76 " " " "
2282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wordwrap $text 76 " " " "
1890 2283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1891 2284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
proc defn {first args} {
1892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$first ne ""} {
1893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- underline " $first" ~
1894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- foreach p $args {
1896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if {$p ne ""} {
1897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- indent $p
1898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
1899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }
2285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$first ne ""} {
2286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ underline " $first" ~
2287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach p $args {
2289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$p ne ""} {
2290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ indent $p
2291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module util.tcl -----
2297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(util.tcl) {
2299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Copyright (c) 2012 WorkWare Systems http://www.workware.net.au/
2300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # All rights reserved
2301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Module which contains miscellaneous utility functions
2303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @compare-versions version1 version2
2305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Versions are of the form 'a.b.c' (may be any number of numeric components)
2307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Compares the two versions and returns:
2309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## -1 if v1 < v2
2310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## 0 if v1 == v2
2311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## 1 if v1 > v2
2312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # If one version has fewer components than the other, 0 is substituted to the right. e.g.
2314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## 0.2 < 0.3
2315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## 0.2.5 > 0.2
2316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## 1.1 == 1.1.0
2317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc compare-versions {v1 v2} {
2319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach c1 [split $v1 .] c2 [split $v2 .] {
2320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$c1 eq ""} {
2321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set c1 0
2322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$c2 eq ""} {
2324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set c2 0
2325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$c1 < $c2} {
2327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return -1
2328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {$c1 > $c2} {
2330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1
2331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0
2334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @suffix suf list
2337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Takes a list and returns a new list with '$suf' appended
2339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # to each element
2340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## suffix .c {a b c} => {a.c b.c c.c}
2342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc suffix {suf list} {
2344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set result {}
2345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach p $list {
2346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend result $p$suf
2347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $result
2349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @prefix pre list
2352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Takes a list and returns a new list with '$pre' prepended
2354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # to each element
2355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ## prefix jim- {a.c b.c} => {jim-a.c jim-b.c}
2357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc prefix {pre list} {
2359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set result {}
2360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach p $list {
2361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend result $pre$p
2362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $result
2364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
2365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
2366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # @lpop list
2367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
2368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Removes the last entry from the given list and returns it.
2369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc lpop {listname} {
2370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ upvar $listname list
2371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set val [lindex $list end]
2372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set list [lrange $list 0 end-1]
2373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $val
1900 2374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1901 2375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1902 2376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- # ----- module wiki-formatting -----
2377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # ----- @module wiki-formatting.tcl -----
1904 2378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- set modsource(wiki-formatting) {
2379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set modsource(wiki-formatting.tcl) {
1906 2380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Copyright (c) 2010 WorkWare Systems http://www.workware.net.au/
1907 2381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# All rights reserved
1908 2382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1909 2383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# Module which provides text formatting
1910 2384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# wiki.tcl.tk format output
@@ -1975,11 +2449,11 @@
1975 2449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {$autosetup(debug)} {
1976 2450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
main $argv
1977 2451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1978 2452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {[catch {main $argv} msg opts] == 1} {
1979 2453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
show-notices
1980 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- autosetup-full-error [error-dump $msg $opts $::autosetup(debug)]
2454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ autosetup-full-error [error-dump $msg $opts $autosetup(debug)]
1981 2455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {!$autosetup(debug)} {
1982 2456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
puts stderr "Try: '[file tail $autosetup(exe)] --debug' for a full stack trace"
1983 2457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1984 2458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
exit 1
1985 2459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1986 2460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1987 2461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED autosetup/autosetup-config.guess
1988 2462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED autosetup/autosetup-config.sub
1989 2463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED autosetup/autosetup-find-tclsh
1990 2464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED autosetup/autosetup-test-tclsh