gopls: move internal/tool into gopls/internal/tool

This moves the internal/tool harness into gopls
so that it can be customized for gopls flag parsing
requirements.

Change-Id: Ied8780cc00ec74e1e8a5ce8d4ff6d5828116b6c6
Reviewed-on: https://go-review.googlesource.com/c/tools/+/789362
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Alex Putman <aputman@golang.org>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/gopls/internal/cmd/call_hierarchy.go b/gopls/internal/cmd/call_hierarchy.go
index 42de3c7..890b21f 100644
--- a/gopls/internal/cmd/call_hierarchy.go
+++ b/gopls/internal/cmd/call_hierarchy.go
@@ -11,7 +11,7 @@
 	"strings"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // callHierarchy implements the callHierarchy verb for gopls.
diff --git a/gopls/internal/cmd/cmd.go b/gopls/internal/cmd/cmd.go
index 17ded08..26987cd 100644
--- a/gopls/internal/cmd/cmd.go
+++ b/gopls/internal/cmd/cmd.go
@@ -30,12 +30,12 @@
 	"golang.org/x/tools/gopls/internal/protocol/semtok"
 	"golang.org/x/tools/gopls/internal/server"
 	"golang.org/x/tools/gopls/internal/settings"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/browser"
 	"golang.org/x/tools/gopls/internal/util/bug"
 	"golang.org/x/tools/gopls/internal/util/moreslices"
 	"golang.org/x/tools/internal/diff"
 	"golang.org/x/tools/internal/jsonrpc2"
-	"golang.org/x/tools/internal/tool"
 )
 
 // Application is the main application as passed to tool.Main
diff --git a/gopls/internal/cmd/codeaction.go b/gopls/internal/cmd/codeaction.go
index b9ec0e4..974b499 100644
--- a/gopls/internal/cmd/codeaction.go
+++ b/gopls/internal/cmd/codeaction.go
@@ -13,7 +13,7 @@
 	"strings"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // codeaction implements the codeaction verb for gopls.
diff --git a/gopls/internal/cmd/codelens.go b/gopls/internal/cmd/codelens.go
index 2b91107..1d32493 100644
--- a/gopls/internal/cmd/codelens.go
+++ b/gopls/internal/cmd/codelens.go
@@ -11,7 +11,7 @@
 
 	"golang.org/x/tools/gopls/internal/protocol"
 	"golang.org/x/tools/gopls/internal/settings"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // codelens implements the codelens verb for gopls.
diff --git a/gopls/internal/cmd/definition.go b/gopls/internal/cmd/definition.go
index 76a5540..26dd86f 100644
--- a/gopls/internal/cmd/definition.go
+++ b/gopls/internal/cmd/definition.go
@@ -14,7 +14,7 @@
 
 	"golang.org/x/tools/gopls/internal/protocol"
 	"golang.org/x/tools/gopls/internal/settings"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // A Definition is the result of a 'definition' query.
diff --git a/gopls/internal/cmd/execute.go b/gopls/internal/cmd/execute.go
index e6e1677..0c40e59 100644
--- a/gopls/internal/cmd/execute.go
+++ b/gopls/internal/cmd/execute.go
@@ -16,8 +16,8 @@
 	"golang.org/x/tools/gopls/internal/filecache"
 	"golang.org/x/tools/gopls/internal/protocol"
 	"golang.org/x/tools/gopls/internal/protocol/command"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/bug"
-	"golang.org/x/tools/internal/tool"
 )
 
 // execute implements the LSP ExecuteCommand verb for gopls.
diff --git a/gopls/internal/cmd/folding_range.go b/gopls/internal/cmd/folding_range.go
index 6634974..e2c2f4b 100644
--- a/gopls/internal/cmd/folding_range.go
+++ b/gopls/internal/cmd/folding_range.go
@@ -10,7 +10,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // foldingRanges implements the folding_ranges verb for gopls
diff --git a/gopls/internal/cmd/help_test.go b/gopls/internal/cmd/help_test.go
index 7b90b3e..6cea8bc 100644
--- a/gopls/internal/cmd/help_test.go
+++ b/gopls/internal/cmd/help_test.go
@@ -22,8 +22,8 @@
 
 	"github.com/google/go-cmp/cmp"
 	"golang.org/x/tools/gopls/internal/cmd"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/tool"
 )
 
 var updateHelpFiles = flag.Bool("update-help-files", false, "Write out the help files instead of checking them")
diff --git a/gopls/internal/cmd/highlight.go b/gopls/internal/cmd/highlight.go
index 8cbb288..26c7fe6 100644
--- a/gopls/internal/cmd/highlight.go
+++ b/gopls/internal/cmd/highlight.go
@@ -10,7 +10,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // highlight implements the highlight verb for gopls.
diff --git a/gopls/internal/cmd/implementation.go b/gopls/internal/cmd/implementation.go
index 0c3b31f..0c845f4 100644
--- a/gopls/internal/cmd/implementation.go
+++ b/gopls/internal/cmd/implementation.go
@@ -11,7 +11,7 @@
 	"sort"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // implementation implements the implementation verb for gopls
diff --git a/gopls/internal/cmd/imports.go b/gopls/internal/cmd/imports.go
index 2bb793a..0b8f143 100644
--- a/gopls/internal/cmd/imports.go
+++ b/gopls/internal/cmd/imports.go
@@ -10,7 +10,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // imports implements the import verb for gopls.
diff --git a/gopls/internal/cmd/info.go b/gopls/internal/cmd/info.go
index 4e12b81..b099046 100644
--- a/gopls/internal/cmd/info.go
+++ b/gopls/internal/cmd/info.go
@@ -18,7 +18,7 @@
 	"golang.org/x/tools/gopls/internal/debug"
 	"golang.org/x/tools/gopls/internal/doc"
 	licensespkg "golang.org/x/tools/gopls/internal/licenses"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // help implements the help command.
diff --git a/gopls/internal/cmd/integration_test.go b/gopls/internal/cmd/integration_test.go
index a37501b..170629c 100644
--- a/gopls/internal/cmd/integration_test.go
+++ b/gopls/internal/cmd/integration_test.go
@@ -41,10 +41,10 @@
 	"golang.org/x/tools/gopls/internal/cmd"
 	"golang.org/x/tools/gopls/internal/debug"
 	"golang.org/x/tools/gopls/internal/protocol"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/bug"
 	"golang.org/x/tools/gopls/internal/version"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/tool"
 	"golang.org/x/tools/txtar"
 )
 
diff --git a/gopls/internal/cmd/links.go b/gopls/internal/cmd/links.go
index 933f025..3b08868 100644
--- a/gopls/internal/cmd/links.go
+++ b/gopls/internal/cmd/links.go
@@ -12,7 +12,7 @@
 	"os"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // links implements the links verb for gopls.
diff --git a/gopls/internal/cmd/prepare_rename.go b/gopls/internal/cmd/prepare_rename.go
index cb4d035..72f42af 100644
--- a/gopls/internal/cmd/prepare_rename.go
+++ b/gopls/internal/cmd/prepare_rename.go
@@ -11,7 +11,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // prepareRename implements the prepare_rename verb for gopls.
diff --git a/gopls/internal/cmd/references.go b/gopls/internal/cmd/references.go
index 8fb2e72..a91925f 100644
--- a/gopls/internal/cmd/references.go
+++ b/gopls/internal/cmd/references.go
@@ -11,7 +11,7 @@
 	"sort"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // references implements the references verb for gopls
diff --git a/gopls/internal/cmd/rename.go b/gopls/internal/cmd/rename.go
index 61f2ae4..1922f40 100644
--- a/gopls/internal/cmd/rename.go
+++ b/gopls/internal/cmd/rename.go
@@ -10,7 +10,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // rename implements the rename verb for gopls.
diff --git a/gopls/internal/cmd/serve.go b/gopls/internal/cmd/serve.go
index a56fc89..b87abda 100644
--- a/gopls/internal/cmd/serve.go
+++ b/gopls/internal/cmd/serve.go
@@ -21,9 +21,9 @@
 	"golang.org/x/tools/gopls/internal/lsprpc"
 	"golang.org/x/tools/gopls/internal/mcp"
 	"golang.org/x/tools/gopls/internal/protocol"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/fakenet"
 	"golang.org/x/tools/internal/jsonrpc2"
-	"golang.org/x/tools/internal/tool"
 )
 
 // Serve is a struct that exposes the configurable parts of the LSP and MCP
diff --git a/gopls/internal/cmd/signature.go b/gopls/internal/cmd/signature.go
index fd6d637..e1c5372 100644
--- a/gopls/internal/cmd/signature.go
+++ b/gopls/internal/cmd/signature.go
@@ -10,7 +10,7 @@
 	"fmt"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // signature implements the signature verb for gopls
diff --git a/gopls/internal/cmd/subcommands.go b/gopls/internal/cmd/subcommands.go
index e30c42b..47d577b 100644
--- a/gopls/internal/cmd/subcommands.go
+++ b/gopls/internal/cmd/subcommands.go
@@ -10,7 +10,7 @@
 	"fmt"
 	"text/tabwriter"
 
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // subcommands is a helper that may be embedded for commands that delegate to
diff --git a/gopls/internal/cmd/symbols.go b/gopls/internal/cmd/symbols.go
index b623463..4641b6a 100644
--- a/gopls/internal/cmd/symbols.go
+++ b/gopls/internal/cmd/symbols.go
@@ -12,7 +12,7 @@
 	"sort"
 
 	"golang.org/x/tools/gopls/internal/protocol"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // symbols implements the symbols verb for gopls
diff --git a/gopls/internal/cmd/workspace_symbol.go b/gopls/internal/cmd/workspace_symbol.go
index 38b961c..cd4ebc6 100644
--- a/gopls/internal/cmd/workspace_symbol.go
+++ b/gopls/internal/cmd/workspace_symbol.go
@@ -12,7 +12,7 @@
 
 	"golang.org/x/tools/gopls/internal/protocol"
 	"golang.org/x/tools/gopls/internal/settings"
-	"golang.org/x/tools/internal/tool"
+	"golang.org/x/tools/gopls/internal/tool"
 )
 
 // workspaceSymbol implements the workspace_symbol verb for gopls.
diff --git a/gopls/internal/test/integration/bench/bench_test.go b/gopls/internal/test/integration/bench/bench_test.go
index f86c8e2..f42cf47 100644
--- a/gopls/internal/test/integration/bench/bench_test.go
+++ b/gopls/internal/test/integration/bench/bench_test.go
@@ -24,13 +24,13 @@
 	"golang.org/x/tools/gopls/internal/protocol/command"
 	"golang.org/x/tools/gopls/internal/test/integration"
 	"golang.org/x/tools/gopls/internal/test/integration/fake"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/bug"
 	"golang.org/x/tools/gopls/internal/util/fakenet"
 	"golang.org/x/tools/internal/event"
 	"golang.org/x/tools/internal/jsonrpc2"
 	"golang.org/x/tools/internal/jsonrpc2/servertest"
 	"golang.org/x/tools/internal/pprof"
-	"golang.org/x/tools/internal/tool"
 )
 
 var (
diff --git a/gopls/internal/test/integration/regtest.go b/gopls/internal/test/integration/regtest.go
index 8518fe1..25ea415 100644
--- a/gopls/internal/test/integration/regtest.go
+++ b/gopls/internal/test/integration/regtest.go
@@ -18,11 +18,11 @@
 
 	"golang.org/x/tools/gopls/internal/cache"
 	"golang.org/x/tools/gopls/internal/cmd"
+	"golang.org/x/tools/gopls/internal/tool"
 	"golang.org/x/tools/gopls/internal/util/memoize"
 	"golang.org/x/tools/internal/drivertest"
 	"golang.org/x/tools/internal/gocommand"
 	"golang.org/x/tools/internal/testenv"
-	"golang.org/x/tools/internal/tool"
 )
 
 var (
diff --git a/internal/tool/tool.go b/gopls/internal/tool/tool.go
similarity index 98%
rename from internal/tool/tool.go
rename to gopls/internal/tool/tool.go
index 6420c96..70a6291 100644
--- a/internal/tool/tool.go
+++ b/gopls/internal/tool/tool.go
@@ -20,7 +20,6 @@
 )
 
 // This file is a harness for writing your main function.
-// The original version of the file is in golang.org/x/tools/internal/tool.
 //
 // It adds a method to the Application type
 //     Main(name, usage string, args []string)
diff --git a/gopls/main.go b/gopls/main.go
index 7aef8c1..0a79d27 100644
--- a/gopls/main.go
+++ b/gopls/main.go
@@ -19,8 +19,8 @@
 	"golang.org/x/telemetry/counter"
 	"golang.org/x/tools/gopls/internal/cmd"
 	"golang.org/x/tools/gopls/internal/filecache"
+	"golang.org/x/tools/gopls/internal/tool"
 	versionpkg "golang.org/x/tools/gopls/internal/version"
-	"golang.org/x/tools/internal/tool"
 )
 
 var version = "" // if set by the linker, overrides the gopls version