1
0
mirror of https://github.com/coreos/ignition.git synced 2026-02-06 09:47:17 +01:00
Files
ignition/validate/main.go
yasminvalim de452c404c fix: Handle unchecked error returns across the codebase and other linter issues
The linter found staticcheck and errorcheck issues.  Deferred statements now  use join  to combine any new error with an existing one, preventing error information from being lost. Other minor error checks, like for printing text  and flushing data have also been addressed.
2025-07-28 19:12:25 -03:00

90 lines
1.9 KiB
Go

// Copyright 2018 CoreOS, Inc.
//
// 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 main
import (
"flag"
"fmt"
"io"
"os"
"strings"
"github.com/coreos/ignition/v2/config"
"github.com/coreos/ignition/v2/internal/version"
)
var (
flagVersion bool
)
func init() {
flag.BoolVar(&flagVersion, "version", false, "print the version of ignition-validate")
flag.Usage = func() {
_, _ = fmt.Fprintf(flag.CommandLine.Output(), "Usage:\n %s [flags] config.ign\n\n", os.Args[0])
flag.PrintDefaults()
}
}
func main() {
flag.Parse()
runIgnValidate(flag.Args())
}
func stdout(format string, a ...interface{}) {
_, _ = fmt.Fprintf(os.Stdout, strings.TrimSpace(format)+"\n", a...)
}
func stderr(format string, a ...interface{}) {
fmt.Fprintf(os.Stderr, strings.TrimSpace(format)+"\n", a...)
}
func die(format string, a ...interface{}) {
stderr(format, a...)
os.Exit(1)
}
func runIgnValidate(args []string) {
if flagVersion {
stdout(version.String)
return
}
if len(args) != 1 {
flag.Usage()
os.Exit(1)
}
var blob []byte
var err error
if args[0] == "-" {
blob, err = io.ReadAll(os.Stdin)
} else {
blob, err = os.ReadFile(args[0])
}
if err != nil {
die("couldn't read config: %v", err)
}
_, rpt, err := config.Parse(blob)
if len(rpt.Entries) > 0 {
stdout(rpt.String())
}
if rpt.IsFatal() {
os.Exit(1)
}
if err != nil {
die("couldn't parse config: %v", err)
}
}