Skip to content
This repository was archived by the owner on Apr 10, 2019. It is now read-only.

Commit 96c7e2a

Browse files
Yaz Saitoalecthomas
authored andcommitted
Remove megacheck, gosimple, and unused.
They were deprecated and subsumed by staticcheck. Also update staticcheck to the head.
1 parent bb04f89 commit 96c7e2a

File tree

107 files changed

+14310
-2396
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+14310
-2396
lines changed

.goreleaser.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,6 @@ builds:
167167
env: *env
168168
main: ./_linters/src/honnef.co/go/tools/cmd/staticcheck
169169

170-
- binary: unused
171-
goos: *goos
172-
goarch: *goarch
173-
env: *env
174-
main: ./_linters/src/honnef.co/go/tools/cmd/unused
175-
176170
- binary: interfacer
177171
goos: *goos
178172
goarch: *goarch
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License (MIT)
2+
3+
Copyright (c) 2013 TOML authors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// Command toml-test-decoder satisfies the toml-test interface for testing
2+
// TOML decoders. Namely, it accepts TOML on stdin and outputs JSON on stdout.
3+
package main
4+
5+
import (
6+
"encoding/json"
7+
"flag"
8+
"fmt"
9+
"log"
10+
"os"
11+
"path"
12+
"time"
13+
14+
"github.com/BurntSushi/toml"
15+
)
16+
17+
func init() {
18+
log.SetFlags(0)
19+
20+
flag.Usage = usage
21+
flag.Parse()
22+
}
23+
24+
func usage() {
25+
log.Printf("Usage: %s < toml-file\n", path.Base(os.Args[0]))
26+
flag.PrintDefaults()
27+
28+
os.Exit(1)
29+
}
30+
31+
func main() {
32+
if flag.NArg() != 0 {
33+
flag.Usage()
34+
}
35+
36+
var tmp interface{}
37+
if _, err := toml.DecodeReader(os.Stdin, &tmp); err != nil {
38+
log.Fatalf("Error decoding TOML: %s", err)
39+
}
40+
41+
typedTmp := translate(tmp)
42+
if err := json.NewEncoder(os.Stdout).Encode(typedTmp); err != nil {
43+
log.Fatalf("Error encoding JSON: %s", err)
44+
}
45+
}
46+
47+
func translate(tomlData interface{}) interface{} {
48+
switch orig := tomlData.(type) {
49+
case map[string]interface{}:
50+
typed := make(map[string]interface{}, len(orig))
51+
for k, v := range orig {
52+
typed[k] = translate(v)
53+
}
54+
return typed
55+
case []map[string]interface{}:
56+
typed := make([]map[string]interface{}, len(orig))
57+
for i, v := range orig {
58+
typed[i] = translate(v).(map[string]interface{})
59+
}
60+
return typed
61+
case []interface{}:
62+
typed := make([]interface{}, len(orig))
63+
for i, v := range orig {
64+
typed[i] = translate(v)
65+
}
66+
67+
// We don't really need to tag arrays, but let's be future proof.
68+
// (If TOML ever supports tuples, we'll need this.)
69+
return tag("array", typed)
70+
case time.Time:
71+
return tag("datetime", orig.Format("2006-01-02T15:04:05Z"))
72+
case bool:
73+
return tag("bool", fmt.Sprintf("%v", orig))
74+
case int64:
75+
return tag("integer", fmt.Sprintf("%d", orig))
76+
case float64:
77+
return tag("float", fmt.Sprintf("%v", orig))
78+
case string:
79+
return tag("string", orig)
80+
}
81+
82+
panic(fmt.Sprintf("Unknown type: %T", tomlData))
83+
}
84+
85+
func tag(typeName string, data interface{}) map[string]interface{} {
86+
return map[string]interface{}{
87+
"type": typeName,
88+
"value": data,
89+
}
90+
}
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
// Command toml-test-encoder satisfies the toml-test interface for testing
2+
// TOML encoders. Namely, it accepts JSON on stdin and outputs TOML on stdout.
3+
package main
4+
5+
import (
6+
"encoding/json"
7+
"flag"
8+
"log"
9+
"os"
10+
"path"
11+
"strconv"
12+
"time"
13+
14+
"github.com/BurntSushi/toml"
15+
)
16+
17+
func init() {
18+
log.SetFlags(0)
19+
20+
flag.Usage = usage
21+
flag.Parse()
22+
}
23+
24+
func usage() {
25+
log.Printf("Usage: %s < json-file\n", path.Base(os.Args[0]))
26+
flag.PrintDefaults()
27+
28+
os.Exit(1)
29+
}
30+
31+
func main() {
32+
if flag.NArg() != 0 {
33+
flag.Usage()
34+
}
35+
36+
var tmp interface{}
37+
if err := json.NewDecoder(os.Stdin).Decode(&tmp); err != nil {
38+
log.Fatalf("Error decoding JSON: %s", err)
39+
}
40+
41+
tomlData := translate(tmp)
42+
if err := toml.NewEncoder(os.Stdout).Encode(tomlData); err != nil {
43+
log.Fatalf("Error encoding TOML: %s", err)
44+
}
45+
}
46+
47+
func translate(typedJson interface{}) interface{} {
48+
switch v := typedJson.(type) {
49+
case map[string]interface{}:
50+
if len(v) == 2 && in("type", v) && in("value", v) {
51+
return untag(v)
52+
}
53+
m := make(map[string]interface{}, len(v))
54+
for k, v2 := range v {
55+
m[k] = translate(v2)
56+
}
57+
return m
58+
case []interface{}:
59+
tabArray := make([]map[string]interface{}, len(v))
60+
for i := range v {
61+
if m, ok := translate(v[i]).(map[string]interface{}); ok {
62+
tabArray[i] = m
63+
} else {
64+
log.Fatalf("JSON arrays may only contain objects. This " +
65+
"corresponds to only tables being allowed in " +
66+
"TOML table arrays.")
67+
}
68+
}
69+
return tabArray
70+
}
71+
log.Fatalf("Unrecognized JSON format '%T'.", typedJson)
72+
panic("unreachable")
73+
}
74+
75+
func untag(typed map[string]interface{}) interface{} {
76+
t := typed["type"].(string)
77+
v := typed["value"]
78+
switch t {
79+
case "string":
80+
return v.(string)
81+
case "integer":
82+
v := v.(string)
83+
n, err := strconv.Atoi(v)
84+
if err != nil {
85+
log.Fatalf("Could not parse '%s' as integer: %s", v, err)
86+
}
87+
return n
88+
case "float":
89+
v := v.(string)
90+
f, err := strconv.ParseFloat(v, 64)
91+
if err != nil {
92+
log.Fatalf("Could not parse '%s' as float64: %s", v, err)
93+
}
94+
return f
95+
case "datetime":
96+
v := v.(string)
97+
t, err := time.Parse("2006-01-02T15:04:05Z", v)
98+
if err != nil {
99+
log.Fatalf("Could not parse '%s' as a datetime: %s", v, err)
100+
}
101+
return t
102+
case "bool":
103+
v := v.(string)
104+
switch v {
105+
case "true":
106+
return true
107+
case "false":
108+
return false
109+
}
110+
log.Fatalf("Could not parse '%s' as a boolean.", v)
111+
case "array":
112+
v := v.([]interface{})
113+
array := make([]interface{}, len(v))
114+
for i := range v {
115+
if m, ok := v[i].(map[string]interface{}); ok {
116+
array[i] = untag(m)
117+
} else {
118+
log.Fatalf("Arrays may only contain other arrays or "+
119+
"primitive values, but found a '%T'.", m)
120+
}
121+
}
122+
return array
123+
}
124+
log.Fatalf("Unrecognized tag type '%s'.", t)
125+
panic("unreachable")
126+
}
127+
128+
func in(key string, m map[string]interface{}) bool {
129+
_, ok := m[key]
130+
return ok
131+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Command tomlv validates TOML documents and prints each key's type.
2+
package main
3+
4+
import (
5+
"flag"
6+
"fmt"
7+
"log"
8+
"os"
9+
"path"
10+
"strings"
11+
"text/tabwriter"
12+
13+
"github.com/BurntSushi/toml"
14+
)
15+
16+
var (
17+
flagTypes = false
18+
)
19+
20+
func init() {
21+
log.SetFlags(0)
22+
23+
flag.BoolVar(&flagTypes, "types", flagTypes,
24+
"When set, the types of every defined key will be shown.")
25+
26+
flag.Usage = usage
27+
flag.Parse()
28+
}
29+
30+
func usage() {
31+
log.Printf("Usage: %s toml-file [ toml-file ... ]\n",
32+
path.Base(os.Args[0]))
33+
flag.PrintDefaults()
34+
35+
os.Exit(1)
36+
}
37+
38+
func main() {
39+
if flag.NArg() < 1 {
40+
flag.Usage()
41+
}
42+
for _, f := range flag.Args() {
43+
var tmp interface{}
44+
md, err := toml.DecodeFile(f, &tmp)
45+
if err != nil {
46+
log.Fatalf("Error in '%s': %s", f, err)
47+
}
48+
if flagTypes {
49+
printTypes(md)
50+
}
51+
}
52+
}
53+
54+
func printTypes(md toml.MetaData) {
55+
tabw := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
56+
for _, key := range md.Keys() {
57+
fmt.Fprintf(tabw, "%s%s\t%s\n",
58+
strings.Repeat(" ", len(key)-1), key, md.Type(key...))
59+
}
60+
tabw.Flush()
61+
}

0 commit comments

Comments
 (0)