diff options
Diffstat (limited to 'vendor/golang.org/x/text/cmd/gotext/main.go')
-rw-r--r-- | vendor/golang.org/x/text/cmd/gotext/main.go | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/vendor/golang.org/x/text/cmd/gotext/main.go b/vendor/golang.org/x/text/cmd/gotext/main.go index b03eb55..1e6c3aa 100644 --- a/vendor/golang.org/x/text/cmd/gotext/main.go +++ b/vendor/golang.org/x/text/cmd/gotext/main.go @@ -25,6 +25,8 @@ import ( "unicode" "unicode/utf8" + "golang.org/x/text/message/pipeline" + "golang.org/x/text/language" "golang.org/x/tools/go/buildutil" ) @@ -34,10 +36,22 @@ func init() { } var ( - dir = flag.String("dir", "textdata", "default subdirectory to store translation files") - langs = flag.String("lang", "en", "comma-separated list of languages to process") + srcLang = flag.String("srclang", "en-US", "the source-code language") + dir = flag.String("dir", "locales", "default subdirectory to store translation files") ) +func config() (*pipeline.Config, error) { + tag, err := language.Parse(*srcLang) + if err != nil { + return nil, wrap(err, "invalid srclang") + } + return &pipeline.Config{ + SourceLanguage: tag, + TranslationsPattern: `messages\.(.*)\.json`, + GenFile: *out, + }, nil +} + // NOTE: the Command struct is copied from the go tool in core. // A Command is an implementation of a go command @@ -45,7 +59,7 @@ var ( type Command struct { // Run runs the command. // The args are the arguments after the command name. - Run func(cmd *Command, args []string) error + Run func(cmd *Command, c *pipeline.Config, args []string) error // UsageLine is the one-line usage message. // The first word in the line is taken to be the command name. @@ -87,8 +101,9 @@ func (c *Command) Runnable() bool { // The order here is the order in which they are printed by 'go help'. var commands = []*Command{ cmdExtract, + cmdRewrite, + cmdGenerate, // TODO: - // - generate code from translations. // - update: full-cycle update of extraction, sending, and integration // - report: report of freshness of translations } @@ -126,8 +141,12 @@ func main() { cmd.Flag.Usage = func() { cmd.Usage() } cmd.Flag.Parse(args[1:]) args = cmd.Flag.Args() - if err := cmd.Run(cmd, args); err != nil { - fatalf("gotext: %v", err) + config, err := config() + if err != nil { + fatalf("gotext: %+v", err) + } + if err := cmd.Run(cmd, config, args); err != nil { + fatalf("gotext: %+v", err) } exit() return @@ -277,12 +296,7 @@ func help(args []string) { if strings.HasSuffix(arg, "documentation") { w := &bytes.Buffer{} - fmt.Fprintln(w, "// Copyright 2016 The Go Authors. All rights reserved.") - fmt.Fprintln(w, "// Use of this source code is governed by a BSD-style") - fmt.Fprintln(w, "// license that can be found in the LICENSE file.") - fmt.Fprintln(w) - fmt.Fprintln(w, "// DO NOT EDIT THIS FILE. GENERATED BY go generate.") - fmt.Fprintln(w, "// Edit the documentation in other files and rerun go generate to generate this one.") + fmt.Fprintln(w, "// Code generated by go generate. DO NOT EDIT.") fmt.Fprintln(w) buf := new(bytes.Buffer) printUsage(buf) @@ -292,10 +306,10 @@ func help(args []string) { if arg == "gendocumentation" { b, err := format.Source(w.Bytes()) if err != nil { - errorf("Could not format generated docs: %v\n", err) + logf("Could not format generated docs: %v\n", err) } if err := ioutil.WriteFile("doc.go", b, 0666); err != nil { - errorf("Could not create file alldocs.go: %v\n", err) + logf("Could not create file alldocs.go: %v\n", err) } } else { fmt.Println(w.String()) @@ -316,7 +330,10 @@ func help(args []string) { } func getLangs() (tags []language.Tag) { - for _, t := range strings.Split(*langs, ",") { + for _, t := range strings.Split(*lang, ",") { + if t == "" { + continue + } tag, err := language.Parse(t) if err != nil { fatalf("gotext: could not parse language %q: %v", t, err) @@ -340,11 +357,11 @@ func exit() { } func fatalf(format string, args ...interface{}) { - errorf(format, args...) + logf(format, args...) exit() } -func errorf(format string, args ...interface{}) { +func logf(format string, args ...interface{}) { log.Printf(format, args...) setExitStatus(1) } |