-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy patheslintConfigCreator.go
More file actions
82 lines (68 loc) · 1.94 KB
/
eslintConfigCreator.go
File metadata and controls
82 lines (68 loc) · 1.94 KB
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
package tools
import (
"encoding/json"
"fmt"
"strings"
)
func quoteWhenIsNotJson(value string) string {
var data interface{}
err := json.Unmarshal([]byte(value), &data)
if err == nil {
// the value was a json value
return value
} else {
// the value was a string literal.
return "\"" + value + "\""
}
}
func CreateEslintConfig(configuration ToolConfiguration) string {
result := `export default [
{
rules: {
`
for _, patternConfiguration := range configuration.PatternsConfiguration {
rule := strings.TrimPrefix(patternConfiguration.PatternId, "ESLint8_")
const tempstring = "TEMPORARYSTRING"
rule = strings.ReplaceAll(rule, "__", tempstring)
rule = strings.ReplaceAll(rule, "_", "/")
rule = strings.ReplaceAll(rule, tempstring, "_")
parametersString := ""
for _, parameter := range patternConfiguration.ParameterConfigurations {
if parameter.Name == "unnamedParam" {
parametersString += quoteWhenIsNotJson(parameter.Value)
}
}
// build named parameters json object
namedParametersString := ""
for _, parameter := range patternConfiguration.ParameterConfigurations {
if parameter.Name != "unnamedParam" {
if len(namedParametersString) == 0 {
namedParametersString += "{"
} else {
namedParametersString += ", "
}
namedParametersString += fmt.Sprintf("\"%s\": %s", parameter.Name, quoteWhenIsNotJson(parameter.Value))
}
}
if len(namedParametersString) > 0 {
namedParametersString += "}"
}
if parametersString != "" && namedParametersString != "" {
parametersString = fmt.Sprintf("%s, %s", parametersString, namedParametersString)
} else {
parametersString += namedParametersString
}
result += " "
if parametersString == "" {
result += fmt.Sprintf(`"%s": "error",`, rule)
result += "\n"
} else {
result += fmt.Sprintf(`"%s": ["error", %s],`, rule, parametersString)
result += "\n"
}
}
result += ` }
}
];`
return result
}