package sh // Implementations must not retain p. type Writer interface { Write(p []byte) (n int, err error) } // Implementations must not retain p. type Argv interface { InitIO(out io.Writer, err io.Writer) InitPB(pb *argvpb.Argv) WriteOUT(bytes []byte) WriteERR(bytes []byte) Stdout(out io.Writer) Stderr(err io.Writer) Match() (matches []string, err error) Help() (help string, err error) Exit(s string, err error) } // Implementations must not retain p. type Command interface { Run(pb *shpb.Command) Start(pb *shpb.Command) Exit(pb *shpb.Command) }