summaryrefslogtreecommitdiffstats
path: root/tcllib/support/devel/sak/validate/cmd.tcl
blob: ca2ddc940d31afa9757b8341e7c39469c1b68d60 (plain)
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

##
# ###