Added -t for specifying conditional build tags

This commit is contained in:
Chris 2020-03-24 13:51:10 -04:00 committed by GitHub
parent a78c11e368
commit bc0ae93dc6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 2 deletions

View File

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