summaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text/cmd/gotext/rewrite.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/cmd/gotext/rewrite.go')
-rw-r--r--vendor/golang.org/x/text/cmd/gotext/rewrite.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/vendor/golang.org/x/text/cmd/gotext/rewrite.go b/vendor/golang.org/x/text/cmd/gotext/rewrite.go
new file mode 100644
index 0000000..a35b727
--- /dev/null
+++ b/vendor/golang.org/x/text/cmd/gotext/rewrite.go
@@ -0,0 +1,55 @@
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "os"
+
+ "golang.org/x/text/message/pipeline"
+)
+
+const printerType = "golang.org/x/text/message.Printer"
+
+// TODO:
+// - merge information into existing files
+// - handle different file formats (PO, XLIFF)
+// - handle features (gender, plural)
+// - message rewriting
+
+func init() {
+ overwrite = cmdRewrite.Flag.Bool("w", false, "write files in place")
+}
+
+var (
+ overwrite *bool
+)
+
+var cmdRewrite = &Command{
+ Run: runRewrite,
+ UsageLine: "rewrite <package>",
+ Short: "rewrites fmt functions to use a message Printer",
+ Long: `
+rewrite is typically done once for a project. It rewrites all usages of
+fmt to use x/text's message package whenever a message.Printer is in scope.
+It rewrites Print and Println calls with constant strings to the equivalent
+using Printf to allow translators to reorder arguments.
+`,
+}
+
+func runRewrite(cmd *Command, args []string) error {
+ w := os.Stdout
+ if *overwrite {
+ w = nil
+ }
+ pkg := "."
+ switch len(args) {
+ case 0:
+ case 1:
+ pkg = args[0]
+ default:
+ return errorf("can only specify at most one package")
+ }
+ return pipeline.Rewrite(w, pkg)
+}