func FileOrStdin()

in pkg/util/cmdutil/input.go [39:58]


func FileOrStdin(cmd *cobra.Command, name string) error {
	var stat, err = os.Stdin.Stat()
	var filenameProvided = cmd.Flag(name).Value.String() != ""
	var unreadableStdin = err != nil
	var stdinProvided = (stat.Mode() & os.ModeCharDevice) == 0

	if !filenameProvided && unreadableStdin {
		return errors.New("unreadable stdin and empty file definition")
	}

	if !filenameProvided && !stdinProvided {
		return ErrEmptyStdinAndFile
	}

	if filenameProvided && stdinProvided {
		return errors.New("non empty stdin and file definition, need one of the two to be populated")
	}

	return nil
}