ci: upgrade golangci-lint to v2

upgrade golangci-lint to v2 and fix code to be compliant
This commit is contained in:
Pascal Bourdier 2025-04-06 11:20:22 +02:00
parent de2f77b49c
commit 31f2935b8a
27 changed files with 126 additions and 99 deletions

View File

@ -1,18 +1,11 @@
run: version: "2"
timeout: 5m
linters: linters:
enable: enable:
- asciicheck - asciicheck
- depguard - depguard
- errorlint - errorlint
- gci
- gochecknoinits - gochecknoinits
- gofmt
- goimports
- gosec - gosec
- gosimple
- staticcheck
- unused
- misspell - misspell
- nakedret - nakedret
- nolintlint - nolintlint
@ -20,19 +13,40 @@ linters:
- revive - revive
- unconvert - unconvert
- unparam - unparam
linters-settings: settings:
depguard: depguard:
rules: rules:
prevent_unmaintained_packages: prevent_unmaintained_packages:
list-mode: lax list-mode: lax
files: files:
- $all - $all
- "!$test" - '!$test'
deny: deny:
- pkg: io/ioutil - pkg: io/ioutil
desc: "replaced by io and os packages since Go 1.16: https://tip.golang.org/doc/go1.16#ioutil" desc: 'replaced by io and os packages since Go 1.16: https://tip.golang.org/doc/go1.16#ioutil'
issues: exclusions:
exclude-rules: generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
rules:
- linters: - linters:
- revive - revive
text: "var-naming" text: var-naming
paths:
- third_party$
- builtin$
- examples$
formatters:
enable:
- gci
- gofmt
- goimports
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$

View File

@ -45,5 +45,5 @@ func getHumanVersion() string {
} }
// Strip off any single quotes added by the git information. // Strip off any single quotes added by the git information.
return strings.Replace(version, "'", "", -1) return strings.ReplaceAll(version, "'", "")
} }

View File

@ -201,13 +201,14 @@ func (n *CandidateNode) SetParent(parent *CandidateNode) {
type ValueVisitor func(*CandidateNode) error type ValueVisitor func(*CandidateNode) error
func (n *CandidateNode) VisitValues(visitor ValueVisitor) error { func (n *CandidateNode) VisitValues(visitor ValueVisitor) error {
if n.Kind == MappingNode { switch n.Kind {
case MappingNode:
for i := 1; i < len(n.Content); i = i + 2 { for i := 1; i < len(n.Content); i = i + 2 {
if err := visitor(n.Content[i]); err != nil { if err := visitor(n.Content[i]); err != nil {
return err return err
} }
} }
} else if n.Kind == SequenceNode { case SequenceNode:
for i := 0; i < len(n.Content); i = i + 1 { for i := 0; i < len(n.Content); i = i + 1 {
if err := visitor(n.Content[i]); err != nil { if err := visitor(n.Content[i]); err != nil {
return err return err

View File

@ -3,7 +3,7 @@ package yqlib
import ( import (
"fmt" "fmt"
logging "gopkg.in/op/go-logging.v1" "gopkg.in/op/go-logging.v1"
) )
type DataTreeNavigator interface { type DataTreeNavigator interface {
@ -64,6 +64,6 @@ func (d *dataTreeNavigator) GetMatchingNodes(context Context, expressionNode *Ex
if handler != nil { if handler != nil {
return handler(d, context, expressionNode) return handler(d, context, expressionNode)
} }
return Context{}, fmt.Errorf("Unknown operator %v", expressionNode.Operation.OperationType) return Context{}, fmt.Errorf("unknown operator %v", expressionNode.Operation.OperationType)
} }

View File

@ -249,11 +249,12 @@ func (dec *tomlDecoder) processTopLevelNode(currentNode *toml.Node) (bool, error
var runAgainstCurrentExp bool var runAgainstCurrentExp bool
var err error var err error
log.Debug("processTopLevelNode: Going to process %v state is current %v", currentNode.Kind, NodeToString(dec.rootMap)) log.Debug("processTopLevelNode: Going to process %v state is current %v", currentNode.Kind, NodeToString(dec.rootMap))
if currentNode.Kind == toml.Table { switch currentNode.Kind {
case toml.Table:
runAgainstCurrentExp, err = dec.processTable(currentNode) runAgainstCurrentExp, err = dec.processTable(currentNode)
} else if currentNode.Kind == toml.ArrayTable { case toml.ArrayTable:
runAgainstCurrentExp, err = dec.processArrayTable(currentNode) runAgainstCurrentExp, err = dec.processArrayTable(currentNode)
} else { default:
runAgainstCurrentExp, err = dec.decodeKeyValuesIntoMap(dec.rootMap, currentNode) runAgainstCurrentExp, err = dec.decodeKeyValuesIntoMap(dec.rootMap, currentNode)
} }

View File

@ -315,13 +315,13 @@ func (dec *xmlDecoder) decodeXML(root *xmlNode) error {
case xml.Comment: case xml.Comment:
commentStr := string(xml.CharData(se)) commentStr := string(xml.CharData(se))
if elem.state == "started" { switch elem.state {
case "started":
applyFootComment(elem, commentStr) applyFootComment(elem, commentStr)
case "chardata":
} else if elem.state == "chardata" {
log.Debug("got a line comment for (%v) %v: [%v]", elem.state, elem.label, commentStr) log.Debug("got a line comment for (%v) %v: [%v]", elem.state, elem.label, commentStr)
elem.n.LineComment = joinComments([]string{elem.n.LineComment, commentStr}, " ") elem.n.LineComment = joinComments([]string{elem.n.LineComment, commentStr}, " ")
} else { default:
log.Debug("got a head comment for (%v) %v: [%v]", elem.state, elem.label, commentStr) log.Debug("got a head comment for (%v) %v: [%v]", elem.state, elem.label, commentStr)
elem.n.HeadComment = joinComments([]string{elem.n.HeadComment, commentStr}, " ") elem.n.HeadComment = joinComments([]string{elem.n.HeadComment, commentStr}, " ")
} }

View File

@ -167,11 +167,11 @@ func needsQuoting(s string) bool {
// [%a_][%w_]* // [%a_][%w_]*
for i, c := range s { for i, c := range s {
if i == 0 { if i == 0 {
if !((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '_') { if (c < 'A' || c > 'Z') && (c < 'a' || c > 'z') && c != '_' {
return true return true
} }
} else { } else {
if !((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '_') { if (c < '0' || c > '9') && (c < 'A' || c > 'Z') && (c < 'a' || c > 'z') && c != '_' {
return true return true
} }
} }
@ -299,10 +299,10 @@ func (le *luaEncoder) encodeAny(writer io.Writer, node *CandidateNode) error {
return writeString(writer, node.Value) return writeString(writer, node.Value)
} }
default: default:
return fmt.Errorf("Lua encoder NYI -- %s", node.Tag) return fmt.Errorf("lua encoder NYI -- %s", node.Tag)
} }
default: default:
return fmt.Errorf("Lua encoder NYI -- %s", node.Tag) return fmt.Errorf("lua encoder NYI -- %s", node.Tag)
} }
} }

View File

@ -107,7 +107,7 @@ func (pe *propertiesEncoder) doEncode(p *properties.Properties, node *CandidateN
case AliasNode: case AliasNode:
return pe.doEncode(p, node.Alias, path, nil) return pe.doEncode(p, node.Alias, path, nil)
default: default:
return fmt.Errorf("Unsupported node %v", node.Tag) return fmt.Errorf("unsupported node %v", node.Tag)
} }
} }

View File

@ -75,7 +75,7 @@ func (pe *shellVariablesEncoder) doEncode(w *io.Writer, node *CandidateNode, pat
case AliasNode: case AliasNode:
return pe.doEncode(w, node.Alias, path) return pe.doEncode(w, node.Alias, path)
default: default:
return fmt.Errorf("Unsupported node %v", node.Tag) return fmt.Errorf("unsupported node %v", node.Tag)
} }
} }

View File

@ -50,14 +50,15 @@ func (p *expressionParserImpl) createExpressionTree(postFixPath []*Operation) (*
log.Debugf("pathTree %v ", Operation.toString()) log.Debugf("pathTree %v ", Operation.toString())
if Operation.OperationType.NumArgs > 0 { if Operation.OperationType.NumArgs > 0 {
numArgs := Operation.OperationType.NumArgs numArgs := Operation.OperationType.NumArgs
if numArgs == 1 { switch numArgs {
case 1:
if len(stack) < 1 { if len(stack) < 1 {
return nil, fmt.Errorf("'%v' expects 1 arg but received none", strings.TrimSpace(Operation.StringValue)) return nil, fmt.Errorf("'%v' expects 1 arg but received none", strings.TrimSpace(Operation.StringValue))
} }
remaining, rhs := stack[:len(stack)-1], stack[len(stack)-1] remaining, rhs := stack[:len(stack)-1], stack[len(stack)-1]
newNode.RHS = rhs newNode.RHS = rhs
stack = remaining stack = remaining
} else if numArgs == 2 { case 2:
if len(stack) < 2 { if len(stack) < 2 {
return nil, fmt.Errorf("'%v' expects 2 args but there is %v", strings.TrimSpace(Operation.StringValue), len(stack)) return nil, fmt.Errorf("'%v' expects 2 args but there is %v", strings.TrimSpace(Operation.StringValue), len(stack))
} }

View File

@ -4,7 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
logging "gopkg.in/op/go-logging.v1" "gopkg.in/op/go-logging.v1"
) )
type expressionPostFixer interface { type expressionPostFixer interface {
@ -26,14 +26,16 @@ func popOpToResult(opStack []*token, result []*Operation) ([]*token, []*Operatio
} }
func validateNoOpenTokens(token *token) error { func validateNoOpenTokens(token *token) error {
if token.TokenType == openCollect { switch token.TokenType {
return fmt.Errorf(("bad expression, could not find matching `]`")) case openCollect:
} else if token.TokenType == openCollectObject { return fmt.Errorf("bad expression, could not find matching `]`")
return fmt.Errorf(("bad expression, could not find matching `}`")) case openCollectObject:
} else if token.TokenType == openBracket { return fmt.Errorf("bad expression, could not find matching `}`")
return fmt.Errorf(("bad expression, could not find matching `)`")) case openBracket:
} return fmt.Errorf("bad expression, could not find matching `)`")
default:
return nil return nil
}
} }
func (p *expressionPostFixerImpl) ConvertToPostfix(infixTokens []*token) ([]*Operation, error) { func (p *expressionPostFixerImpl) ConvertToPostfix(infixTokens []*token) ([]*Operation, error) {
@ -64,7 +66,7 @@ func (p *expressionPostFixerImpl) ConvertToPostfix(infixTokens []*token) ([]*Ope
opStack, result = popOpToResult(opStack, result) opStack, result = popOpToResult(opStack, result)
} }
if len(opStack) == 0 { if len(opStack) == 0 {
return nil, errors.New("Bad path expression, got close collect brackets without matching opening bracket") return nil, errors.New("bad path expression, got close collect brackets without matching opening bracket")
} }
// now we should have [ as the last element on the opStack, get rid of it // now we should have [ as the last element on the opStack, get rid of it
opStack = opStack[0 : len(opStack)-1] opStack = opStack[0 : len(opStack)-1]

View File

@ -31,28 +31,29 @@ type token struct {
} }
func (t *token) toString(detail bool) string { func (t *token) toString(detail bool) string {
if t.TokenType == operationToken { switch t.TokenType {
case operationToken:
if detail { if detail {
return fmt.Sprintf("%v (%v)", t.Operation.toString(), t.Operation.OperationType.Precedence) return fmt.Sprintf("%v (%v)", t.Operation.toString(), t.Operation.OperationType.Precedence)
} }
return t.Operation.toString() return t.Operation.toString()
} else if t.TokenType == openBracket { case openBracket:
return "(" return "("
} else if t.TokenType == closeBracket { case closeBracket:
return ")" return ")"
} else if t.TokenType == openCollect { case openCollect:
return "[" return "["
} else if t.TokenType == closeCollect { case closeCollect:
return "]" return "]"
} else if t.TokenType == openCollectObject { case openCollectObject:
return "{" return "{"
} else if t.TokenType == closeCollectObject { case closeCollectObject:
return "}" return "}"
} else if t.TokenType == traverseArrayCollect { case traverseArrayCollect:
return ".[" return ".["
default:
}
return "NFI" return "NFI"
}
} }
func unwrap(value string) string { func unwrap(value string) string {
@ -164,7 +165,6 @@ func handleToken(tokens []*token, index int, postProcessedTokens []*token) (toke
} }
if index != len(tokens)-1 && currentToken.CheckForPostTraverse && if index != len(tokens)-1 && currentToken.CheckForPostTraverse &&
(tokenIsOpType(tokens[index+1], traversePathOpType) || (tokenIsOpType(tokens[index+1], traversePathOpType) ||
(tokens[index+1].TokenType == traverseArrayCollect)) { (tokens[index+1].TokenType == traverseArrayCollect)) {
log.Debug("adding pipe because the next thing is traverse") log.Debug("adding pipe because the next thing is traverse")

View File

@ -26,11 +26,12 @@ func deleteChildOperator(d *dataTreeNavigator, context Context, expressionNode *
candidatePath := candidate.GetPath() candidatePath := candidate.GetPath()
childPath := candidatePath[len(candidatePath)-1] childPath := candidatePath[len(candidatePath)-1]
if parentNode.Kind == MappingNode { switch parentNode.Kind {
case MappingNode:
deleteFromMap(candidate.Parent, childPath) deleteFromMap(candidate.Parent, childPath)
} else if parentNode.Kind == SequenceNode { case SequenceNode:
deleteFromArray(candidate.Parent, childPath) deleteFromArray(candidate.Parent, childPath)
} else { default:
return Context{}, fmt.Errorf("cannot delete nodes from parent of tag %v", parentNode.Tag) return Context{}, fmt.Errorf("cannot delete nodes from parent of tag %v", parentNode.Tag)
} }
} }

View File

@ -45,12 +45,13 @@ func keysOperator(_ *dataTreeNavigator, context Context, _ *ExpressionNode) (Con
candidate := el.Value.(*CandidateNode) candidate := el.Value.(*CandidateNode)
var targetNode *CandidateNode var targetNode *CandidateNode
if candidate.Kind == MappingNode { switch candidate.Kind {
case MappingNode:
targetNode = getMapKeys(candidate) targetNode = getMapKeys(candidate)
} else if candidate.Kind == SequenceNode { case SequenceNode:
targetNode = getIndices(candidate) targetNode = getIndices(candidate)
} else { default:
return Context{}, fmt.Errorf("Cannot get keys of %v, keys only works for maps and arrays", candidate.Tag) return Context{}, fmt.Errorf("cannot get keys of %v, keys only works for maps and arrays", candidate.Tag)
} }
results.PushBack(targetNode) results.PushBack(targetNode)

View File

@ -82,7 +82,7 @@ func loadStringOperator(d *dataTreeNavigator, context Context, expressionNode *E
contentsCandidate, err := loadString(filename) contentsCandidate, err := loadString(filename)
if err != nil { if err != nil {
return Context{}, fmt.Errorf("Failed to load %v: %w", filename, err) return Context{}, fmt.Errorf("failed to load %v: %w", filename, err)
} }
results.PushBack(contentsCandidate) results.PushBack(contentsCandidate)
@ -118,7 +118,7 @@ func loadOperator(d *dataTreeNavigator, context Context, expressionNode *Express
contentsCandidate, err := loadWithDecoder(filename, loadPrefs.decoder) contentsCandidate, err := loadWithDecoder(filename, loadPrefs.decoder)
if err != nil { if err != nil {
return Context{}, fmt.Errorf("Failed to load %v: %w", filename, err) return Context{}, fmt.Errorf("failed to load %v: %w", filename, err)
} }
results.PushBack(contentsCandidate) results.PushBack(contentsCandidate)

View File

@ -154,9 +154,9 @@ func repeatString(lhs *CandidateNode, rhs *CandidateNode) (*CandidateNode, error
if err != nil { if err != nil {
return nil, err return nil, err
} else if count < 0 { } else if count < 0 {
return nil, fmt.Errorf("Cannot repeat string by a negative number (%v)", count) return nil, fmt.Errorf("cannot repeat string by a negative number (%v)", count)
} else if count > 10000000 { } else if count > 10000000 {
return nil, fmt.Errorf("Cannot repeat string by more than 100 million (%v)", count) return nil, fmt.Errorf("cannot repeat string by more than 100 million (%v)", count)
} }
target.Value = strings.Repeat(stringNode.Value, count) target.Value = strings.Repeat(stringNode.Value, count)

View File

@ -206,7 +206,7 @@ var multiplyOperatorScenarios = []expressionScenario{
skipDoc: true, skipDoc: true,
document: `n: -4`, document: `n: -4`,
expression: `"banana" * .n`, expression: `"banana" * .n`,
expectedError: "Cannot repeat string by a negative number (-4)", expectedError: "cannot repeat string by a negative number (-4)",
}, },
{ {
description: "Multiply string X by more than 100 million", description: "Multiply string X by more than 100 million",
@ -214,7 +214,7 @@ var multiplyOperatorScenarios = []expressionScenario{
skipDoc: true, skipDoc: true,
document: `n: 100000001`, document: `n: 100000001`,
expression: `"banana" * .n`, expression: `"banana" * .n`,
expectedError: "Cannot repeat string by more than 100 million (100000001)", expectedError: "cannot repeat string by more than 100 million (100000001)",
}, },
{ {
description: "Multiply int node X string", description: "Multiply int node X string",

View File

@ -58,11 +58,12 @@ func omitOperator(d *dataTreeNavigator, context Context, expressionNode *Express
var replacement *CandidateNode var replacement *CandidateNode
if node.Kind == MappingNode { switch node.Kind {
case MappingNode:
replacement = omitMap(node, indicesToOmit) replacement = omitMap(node, indicesToOmit)
} else if node.Kind == SequenceNode { case SequenceNode:
replacement = omitSequence(node, indicesToOmit) replacement = omitSequence(node, indicesToOmit)
} else { default:
log.Debugf("Omit from type %v (%v) is noop", node.Tag, node.GetNicePath()) log.Debugf("Omit from type %v (%v) is noop", node.Tag, node.GetNicePath())
return context, nil return context, nil
} }

View File

@ -22,15 +22,16 @@ func getPathArrayFromNode(funcName string, node *CandidateNode) ([]interface{},
path := make([]interface{}, len(node.Content)) path := make([]interface{}, len(node.Content))
for i, childNode := range node.Content { for i, childNode := range node.Content {
if childNode.Tag == "!!str" { switch childNode.Tag {
case "!!str":
path[i] = childNode.Value path[i] = childNode.Value
} else if childNode.Tag == "!!int" { case "!!int":
number, err := parseInt(childNode.Value) number, err := parseInt(childNode.Value)
if err != nil { if err != nil {
return nil, fmt.Errorf("%v: could not parse %v as an int: %w", funcName, childNode.Value, err) return nil, fmt.Errorf("%v: could not parse %v as an int: %w", funcName, childNode.Value, err)
} }
path[i] = number path[i] = number
} else { default:
return nil, fmt.Errorf("%v: expected either a !!str or !!int in the path, found %v instead", funcName, childNode.Tag) return nil, fmt.Errorf("%v: expected either a !!str or !!int in the path, found %v instead", funcName, childNode.Tag)
} }

View File

@ -64,15 +64,15 @@ func pickOperator(d *dataTreeNavigator, context Context, expressionNode *Express
node := el.Value.(*CandidateNode) node := el.Value.(*CandidateNode)
var replacement *CandidateNode var replacement *CandidateNode
if node.Kind == MappingNode { switch node.Kind {
case MappingNode:
replacement = pickMap(node, indicesToPick) replacement = pickMap(node, indicesToPick)
} else if node.Kind == SequenceNode { case SequenceNode:
replacement, err = pickSequence(node, indicesToPick) replacement, err = pickSequence(node, indicesToPick)
if err != nil { if err != nil {
return Context{}, err return Context{}, err
} }
default:
} else {
return Context{}, fmt.Errorf("cannot pick indices from type %v (%v)", node.Tag, node.GetNicePath()) return Context{}, fmt.Errorf("cannot pick indices from type %v (%v)", node.Tag, node.GetNicePath())
} }

View File

@ -47,11 +47,12 @@ func sortByOperator(d *dataTreeNavigator, context Context, expressionNode *Expre
sort.Stable(sortableArray) sort.Stable(sortableArray)
sortedList := candidate.CopyWithoutContent() sortedList := candidate.CopyWithoutContent()
if candidate.Kind == MappingNode { switch candidate.Kind {
case MappingNode:
for _, sortedNode := range sortableArray { for _, sortedNode := range sortableArray {
sortedList.AddKeyValueChild(sortedNode.Node.Key, sortedNode.Node) sortedList.AddKeyValueChild(sortedNode.Node.Key, sortedNode.Node)
} }
} else if candidate.Kind == SequenceNode { case SequenceNode:
for _, sortedNode := range sortableArray { for _, sortedNode := range sortableArray {
sortedList.AddChild(sortedNode.Node) sortedList.AddChild(sortedNode.Node)
} }

View File

@ -410,7 +410,7 @@ func extractMatchArguments(d *dataTreeNavigator, context Context, expressionNode
return nil, matchPrefs, fmt.Errorf(`'i' is not a valid option for match. To ignore case, use an expression like match("(?i)cat")`) return nil, matchPrefs, fmt.Errorf(`'i' is not a valid option for match. To ignore case, use an expression like match("(?i)cat")`)
} }
if len(paramText) > 0 { if len(paramText) > 0 {
return nil, matchPrefs, fmt.Errorf(`Unrecognised match params '%v', please see docs at https://mikefarah.gitbook.io/yq/operators/string-operators`, paramText) return nil, matchPrefs, fmt.Errorf(`unrecognised match params '%v', please see docs at https://mikefarah.gitbook.io/yq/operators/string-operators`, paramText)
} }
} }

View File

@ -19,7 +19,7 @@ func parseStyle(customStyle string) (Style, error) {
} else if customStyle == "flow" { } else if customStyle == "flow" {
return FlowStyle, nil return FlowStyle, nil
} else if customStyle != "" { } else if customStyle != "" {
return 0, fmt.Errorf("Unknown style %v", customStyle) return 0, fmt.Errorf("unknown style %v", customStyle)
} }
return 0, nil return 0, nil
} }

View File

@ -135,16 +135,18 @@ func traverseArrayIndices(context Context, matchingNode *CandidateNode, indicesT
} }
} }
if matchingNode.Kind == AliasNode { switch matchingNode.Kind {
case AliasNode:
matchingNode = matchingNode.Alias matchingNode = matchingNode.Alias
return traverseArrayIndices(context, matchingNode, indicesToTraverse, prefs) return traverseArrayIndices(context, matchingNode, indicesToTraverse, prefs)
} else if matchingNode.Kind == SequenceNode { case SequenceNode:
return traverseArrayWithIndices(matchingNode, indicesToTraverse, prefs) return traverseArrayWithIndices(matchingNode, indicesToTraverse, prefs)
} else if matchingNode.Kind == MappingNode { case MappingNode:
return traverseMapWithIndices(context, matchingNode, indicesToTraverse, prefs) return traverseMapWithIndices(context, matchingNode, indicesToTraverse, prefs)
} default:
log.Debugf("OperatorArrayTraverse skipping %v as its a %v", matchingNode, matchingNode.Tag) log.Debugf("OperatorArrayTraverse skipping %v as its a %v", matchingNode, matchingNode.Tag)
return list.New(), nil return list.New(), nil
}
} }
func traverseMapWithIndices(context Context, candidate *CandidateNode, indices []*CandidateNode, prefs traversePreferences) (*list.List, error) { func traverseMapWithIndices(context Context, candidate *CandidateNode, indices []*CandidateNode, prefs traversePreferences) (*list.List, error) {

View File

@ -132,7 +132,7 @@ func (p *resultsPrinter) PrintResults(matchingNodes *list.List) error {
tempBufferBytes := tempBuffer.Bytes() tempBufferBytes := tempBuffer.Bytes()
if bytes.IndexByte(tempBufferBytes, 0) != -1 { if bytes.IndexByte(tempBufferBytes, 0) != -1 {
return fmt.Errorf( return fmt.Errorf(
"Can't serialize value because it contains NUL char and you are using NUL separated output", "can't serialize value because it contains NUL char and you are using NUL separated output",
) )
} }
if _, err := writer.Write(tempBufferBytes); err != nil { if _, err := writer.Write(tempBufferBytes); err != nil {

View File

@ -319,10 +319,11 @@ func documentUnwrappedEncodePropertyScenario(w *bufio.Writer, s formatScenario)
prefs := NewDefaultPropertiesPreferences() prefs := NewDefaultPropertiesPreferences()
useArrayBracketsFlag := "" useArrayBracketsFlag := ""
useCustomSeparatorFlag := "" useCustomSeparatorFlag := ""
if s.scenarioType == "encode-array-brackets" { switch s.scenarioType {
case "encode-array-brackets":
useArrayBracketsFlag = " --properties-array-brackets" useArrayBracketsFlag = " --properties-array-brackets"
prefs.UseArrayBrackets = true prefs.UseArrayBrackets = true
} else if s.scenarioType == "encode-custom-separator" { case "encode-custom-separator":
prefs.KeyValueSeparator = " :@ " prefs.KeyValueSeparator = " :@ "
useCustomSeparatorFlag = ` --properties-separator=" :@ "` useCustomSeparatorFlag = ` --properties-separator=" :@ "`
} }

View File

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
set -ex set -ex
go mod download golang.org/x/tools@latest go mod download golang.org/x/tools@latest
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.62.0 curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.0.2
wget -O- -nv https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s wget -O- -nv https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s