...
1
2
3
4
5
6
7
8
9
10
11 package main
12
13 import (
14 "flag"
15 "fmt"
16 "go/build"
17 "log"
18 "os"
19
20 "golang.org/x/tools/go/buildutil"
21 "golang.org/x/tools/refactor/rename"
22 )
23
24 var (
25 offsetFlag = flag.String("offset", "", "file and byte offset of identifier to be renamed, e.g. 'file.go:#123'. For use by editors.")
26 fromFlag = flag.String("from", "", "identifier to be renamed; see -help for formats")
27 toFlag = flag.String("to", "", "new name for identifier")
28 helpFlag = flag.Bool("help", false, "show usage message")
29 )
30
31 func init() {
32 flag.Var((*buildutil.TagsFlag)(&build.Default.BuildTags), "tags", buildutil.TagsFlagDoc)
33 flag.BoolVar(&rename.Force, "force", false, "proceed, even if conflicts were reported")
34 flag.BoolVar(&rename.Verbose, "v", false, "print verbose information")
35 flag.BoolVar(&rename.Diff, "d", false, "display diffs instead of rewriting files")
36 flag.StringVar(&rename.DiffCmd, "diffcmd", "diff", "diff command invoked when using -d")
37 }
38
39 func main() {
40 log.SetPrefix("gorename: ")
41 log.SetFlags(0)
42 flag.Parse()
43 if len(flag.Args()) > 0 {
44 log.Fatal("surplus arguments")
45 }
46
47 if *helpFlag || (*offsetFlag == "" && *fromFlag == "" && *toFlag == "") {
48 fmt.Print(rename.Usage)
49 return
50 }
51
52 if err := rename.Main(&build.Default, *offsetFlag, *fromFlag, *toFlag); err != nil {
53 if err != rename.ConflictError {
54 log.Fatal(err)
55 }
56 os.Exit(1)
57 }
58 }
59
View as plain text