-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
93 lines (78 loc) · 2.25 KB
/
main.go
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// gofleece
// Copyright (C) 2015 Glen Newton
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
package main
import (
"flag"
"log"
)
func handleParameters() error {
flag.Parse()
return nil
}
var STOP_ON_ERROR bool = false
var ZERO_LENGTH_FILE_IS_VALID bool = false
var VERBOSE bool = false
var SILENT bool = false
var PROCESS_XML bool = false
func init() {
flag.BoolVar(&STOP_ON_ERROR, "e", STOP_ON_ERROR, "Stop if error encountered")
flag.BoolVar(&SILENT, "s", SILENT, "Do not produce any output")
flag.BoolVar(&VERBOSE, "v", VERBOSE, "Verbosity of logging")
flag.BoolVar(&ZERO_LENGTH_FILE_IS_VALID, "z", ZERO_LENGTH_FILE_IS_VALID, "Acccept a file of zero length as being valid JSON")
flag.BoolVar(&PROCESS_XML, "x", PROCESS_XML, "Process XML instead of JSON (default false)")
}
func main() {
var finalErr error = nil
log.SetFlags(log.LstdFlags | log.Lshortfile)
var fileNames = []string{""}
err := handleParameters()
if err != nil {
flag.Usage()
fatal(err)
}
if len(flag.Args()) != 0 {
fileNames = flag.Args()
}
for _, filename := range fileNames {
err = process(filename)
if err != nil {
logg("###ERROR \"" + filename + "\": NOT valid JSON")
logg(err)
finalErr = err
if STOP_ON_ERROR {
fatal(err)
}
} else {
logv("Valid JSON")
}
logv("------------------")
}
if finalErr != nil {
fatal(nil)
}
}
func process(filename string) error {
reader, err := genericReader(filename)
if err != nil {
if err == ErrZeroLengthFile && ZERO_LENGTH_FILE_IS_VALID {
return nil
}
return err
}
if PROCESS_XML {
return nil
} else {
return verifyJson(reader)
}
}