File: cmd.tcl

package info (click to toggle)
tcllib 1.20%2Bdfsg-1
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 68,064 kB
  • sloc: tcl: 216,842; ansic: 14,250; sh: 2,846; xml: 1,766; yacc: 1,145; pascal: 881; makefile: 107; perl: 84; f90: 84; python: 33; ruby: 13; php: 11
file content (70 lines) | stat: -rw-r--r-- 1,389 bytes parent folder | download | duplicates (16)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- tcl -*-
# Implementation of 'validate'.

# Available variables
# * argv  - Cmdline arguments
# * base  - Location of sak.tcl = Top directory of Tcllib distribution
# * cbase - Location of all files relevant to this command.
# * sbase - Location of all files supporting the SAK.

package require sak::util
package require sak::validate

set raw  0
set log  0
set stem {}
set tclv {}

if {[llength $argv]} {
    # First argument may be a command.
    set cmd [lindex $argv 0]
    if {![catch {
	package require sak::validate::$cmd
    } msg]} {
	set argv [lrange $argv 1 end]
    } else {
	set cmd all
    }

    # Now process any possible options (-v, -l, --log).

    while {[string match -* [set opt [lindex $argv 0]]]} {
	switch -exact -- $opt {
	    -v {
		set raw 1
		set argv [lrange $argv 1 end]
	    }
	    -l - --log {
		set log 1
		set stem [lindex $argv 1]
		set argv [lrange $argv 2 end]
	    }
	    -t - --tcl {
		set tclv [lindex $argv 1]
		set argv [lrange $argv 2 end]
	    }
	    default {
		sak::validate::usage Unknown option "\"$opt\""
	    }
	}
    }
} else {
    set cmd all
}

# At last now handle all remaining arguments as module specifications.
if {![sak::util::checkModules argv]} return

if {$log} { set raw 0 }

array set mode {
    00 short
    01 log
    10 verbose
    11 _impossible_
}

sak::validate::$cmd $argv $mode($raw$log) $stem $tclv

##
# ###