summaryrefslogtreecommitdiff
path: root/vendor/github.com/google/yamlfmt/engine/consecutive_engine.go
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-05-11 21:12:57 -0600
committermo khan <mo@mokhan.ca>2025-05-11 21:12:57 -0600
commit60440f90dca28e99a31dd328c5f6d5dc0f9b6a2e (patch)
tree2f54adf55086516f162f0a55a5347e6b25f7f176 /vendor/github.com/google/yamlfmt/engine/consecutive_engine.go
parent05ca9b8d3a9c7203a3a3b590beaa400900bd9007 (diff)
chore: vendor go dependencies
Diffstat (limited to 'vendor/github.com/google/yamlfmt/engine/consecutive_engine.go')
-rw-r--r--vendor/github.com/google/yamlfmt/engine/consecutive_engine.go103
1 files changed, 103 insertions, 0 deletions
diff --git a/vendor/github.com/google/yamlfmt/engine/consecutive_engine.go b/vendor/github.com/google/yamlfmt/engine/consecutive_engine.go
new file mode 100644
index 0000000..650d1b7
--- /dev/null
+++ b/vendor/github.com/google/yamlfmt/engine/consecutive_engine.go
@@ -0,0 +1,103 @@
+// Copyright 2022 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package engine
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/google/yamlfmt"
+)
+
+// Engine that will process each file one by one consecutively.
+type ConsecutiveEngine struct {
+ LineSepCharacter string
+ Formatter yamlfmt.Formatter
+ Quiet bool
+ ContinueOnError bool
+ OutputFormat EngineOutputFormat
+}
+
+func (e *ConsecutiveEngine) FormatContent(content []byte) ([]byte, error) {
+ return e.Formatter.Format(content)
+}
+
+func (e *ConsecutiveEngine) Format(paths []string) (fmt.Stringer, error) {
+ formatDiffs, formatErrs := e.formatAll(paths)
+ if len(formatErrs) > 0 {
+ if e.ContinueOnError {
+ fmt.Print(formatErrs)
+ fmt.Println("Continuing...")
+ } else {
+ return nil, formatErrs
+ }
+ }
+ return nil, formatDiffs.ApplyAll()
+}
+
+func (e *ConsecutiveEngine) Lint(paths []string) (fmt.Stringer, error) {
+ formatDiffs, formatErrs := e.formatAll(paths)
+ if len(formatErrs) > 0 {
+ return nil, formatErrs
+ }
+ if formatDiffs.ChangedCount() == 0 {
+ return nil, nil
+ }
+ return getEngineOutput(e.OutputFormat, yamlfmt.OperationLint, formatDiffs, e.Quiet)
+}
+
+func (e *ConsecutiveEngine) DryRun(paths []string) (fmt.Stringer, error) {
+ formatDiffs, formatErrs := e.formatAll(paths)
+ if len(formatErrs) > 0 {
+ return nil, formatErrs
+ }
+ if formatDiffs.ChangedCount() == 0 {
+ return nil, nil
+ }
+ return getEngineOutput(e.OutputFormat, yamlfmt.OperationDry, formatDiffs, e.Quiet)
+}
+
+func (e *ConsecutiveEngine) formatAll(paths []string) (yamlfmt.FileDiffs, FormatErrors) {
+ formatDiffs := yamlfmt.FileDiffs{}
+ formatErrs := FormatErrors{}
+ for _, path := range paths {
+ fileDiff, err := e.formatFileContent(path)
+ if err != nil {
+ formatErrs = append(formatErrs, wrapFormatError(path, err))
+ continue
+ }
+ formatDiffs.Add(fileDiff)
+ }
+ return formatDiffs, formatErrs
+}
+
+func (e *ConsecutiveEngine) formatFileContent(path string) (*yamlfmt.FileDiff, error) {
+ content, err := os.ReadFile(path)
+ if err != nil {
+ return nil, err
+ }
+ formatted, err := e.FormatContent(content)
+ if err != nil {
+ return nil, err
+ }
+ return &yamlfmt.FileDiff{
+ Path: path,
+ Diff: &yamlfmt.FormatDiff{
+ Original: string(content),
+ Formatted: string(formatted),
+ LineSep: e.LineSepCharacter,
+ },
+ }, nil
+}