internal/lsp/cmd: don't create .orig files for rename by default
Fixes golang/go#35551
Change-Id: I78086e0288da84a4c0b008d05e376f47b30d978a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/207347
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/internal/lsp/cmd/rename.go b/internal/lsp/cmd/rename.go
index 98f7d69..42eeeaa 100644
--- a/internal/lsp/cmd/rename.go
+++ b/internal/lsp/cmd/rename.go
@@ -23,8 +23,9 @@
// rename implements the rename verb for gopls.
type rename struct {
- Diff bool `flag:"d" help:"display diffs instead of rewriting files"`
- Write bool `flag:"w" help:"write result to (source) file instead of stdout"`
+ Diff bool `flag:"d" help:"display diffs instead of rewriting files"`
+ Write bool `flag:"w" help:"write result to (source) file instead of stdout"`
+ Preserve bool `flag:"preserve" help:"preserve original files"`
app *Application
}
@@ -102,9 +103,10 @@
switch {
case r.Write:
fmt.Fprintln(os.Stderr, filename)
- err := os.Rename(filename, filename+".orig")
- if err != nil {
- return errors.Errorf("%v: %v", edits, err)
+ if r.Preserve {
+ if err := os.Rename(filename, filename+".orig"); err != nil {
+ return errors.Errorf("%v: %v", edits, err)
+ }
}
ioutil.WriteFile(filename, []byte(newContent), 0644)
case r.Diff: