func main()

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)
	}
}