in internal/plugin/plugin.go [31:70]
func Main(progname string, args []string) {
input, inputStdin := "", false
fs := flag.NewFlagSet(progname, flag.ExitOnError)
const inputFlag = "input"
fs.StringVar(&input, inputFlag, "", "plugin `payload`")
const inputStdinFlag = "input-stdin"
fs.BoolVar(&inputStdin, inputStdinFlag, false, "receive plugin payload on stdin")
_ = fs.Parse(args)
if input == "" && !inputStdin {
fs.Usage()
log.Fatalf("no plugin input: either %q or %q flag must be specified",
fs.Lookup(inputFlag).Name,
fs.Lookup(inputStdinFlag).Name)
}
var r io.Reader = strings.NewReader(input)
if inputStdin {
r = os.Stdin
}
in, err := parseInput(r)
if err != nil {
log.Fatalf("invalid plugin input: %v", err)
}
// This is a logger used for extra diagnostics, when the debugging mode is on.
debugLog := log.New(log.Writer(), log.Prefix(), log.Flags())
if !in.Configuration.Debug {
debugLog.SetOutput(io.Discard)
}
if err := invokeOperation(context.Background(), in, debugLog); err != nil {
log.Fatal(err)
}
}