diff --git a/cmd/pkger/cmds/pack.go b/cmd/pkger/cmds/pack.go index 7973e54..adf917e 100644 --- a/cmd/pkger/cmds/pack.go +++ b/cmd/pkger/cmds/pack.go @@ -30,6 +30,7 @@ const outName = "pkged.go" type packCmd struct { *flag.FlagSet out string + tags string help bool include slice subs []command @@ -53,7 +54,7 @@ func (e *packCmd) Exec(args []string) error { return err } - if err := Package(info, fp, decls); err != nil { + if err := Package(info, fp, decls, e.tags); err != nil { return err } @@ -104,6 +105,7 @@ func New() (*packCmd, error) { c.FlagSet = flag.NewFlagSet("pkger", flag.ExitOnError) c.BoolVar(&c.help, "h", false, "prints help information") c.StringVar(&c.out, "o", "", "output directory for pkged.go") + c.StringVar(&c.tags, "t", "", "conditional build tag(s) for pkged.go") c.Var(&c.include, "include", "packages the specified file or directory") c.Usage = func() { fmt.Fprintf(os.Stderr, "Usage:\n\n") @@ -123,7 +125,7 @@ func (e *packCmd) Flags() *flag.FlagSet { return e.FlagSet } -func Package(info here.Info, out string, decls parser.Decls) error { +func Package(info here.Info, out string, decls parser.Decls, tags string) error { c, err := here.Dir(filepath.Dir(out)) if err != nil { return err @@ -142,6 +144,9 @@ func Package(info here.Info, out string, decls parser.Decls) error { } defer f.Close() + if len(tags) > 0 { + fmt.Fprintf(f, "// +build %s\n\n", tags) + } fmt.Fprintf(f, "// Code generated by pkger; DO NOT EDIT.\n\n") fmt.Fprintf(f, "package %s\n\n", c.Name) fmt.Fprintf(f, "import (\n\t\"github.com/markbates/pkger\"\n\t")