in cmd/cfn-format/main.go [51:122]
func main() {
var fileName string
var input []byte
var source cfn.Template
var err error
pflag.Parse()
args := pflag.Args()
if len(args) == 1 {
// Reading from a file
fileName = args[0]
input, err = ioutil.ReadFile(fileName)
if err != nil {
die(err.Error())
}
} else if !termutil.Isatty(os.Stdin.Fd()) {
if writeFlag {
// Can't use write without a filename!
die("Can't write back to a file when reading from stdin")
}
input, err = ioutil.ReadAll(os.Stdin)
if err != nil {
die(err.Error())
}
} else {
pflag.Usage()
}
source, err = parse.String(string(input))
if err != nil {
die(err.Error())
}
// Format the output
options := format.Options{}
if jsonFlag {
options.Style = format.JSON
}
if compactFlag {
options.Compact = true
}
output := format.Template(source, options)
if verifyFlag {
if len(fileName) > 0 {
fmt.Fprint(os.Stderr, fileName+": ")
}
if strings.TrimSpace(string(input)) == output {
fmt.Fprintln(os.Stderr, "formatted OK")
os.Exit(0)
} else {
die("would reformat")
}
}
// Verify the output is valid
err = parse.Verify(source, output)
if err != nil {
die(err.Error())
}
if writeFlag {
ioutil.WriteFile(fileName, []byte(output), 0644)
} else {
fmt.Println(output)
}
}