1
0
mirror of https://github.com/golang/go synced 2024-10-01 06:18:31 -06:00
go/internal/lsp/cmd/info.go
zikaeroh e84277c2c0 internal/lsp/cmd: use x/tools/gopls as the gopls bug prefix
"x/tools/gopls" appears to be the currently used prefix for gopls
issues. Make "gopls bug" use this prefix instead of just "gopls" to
avoid needing to edit titles before/after submitting.

Change-Id: I7244aa5539332cc361870f49ae4f27b2a2441571
Reviewed-on: https://go-review.googlesource.com/c/tools/+/209964
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-12-05 01:26:23 +00:00

85 lines
2.3 KiB
Go

// Copyright 2019 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 cmd
import (
"bytes"
"context"
"flag"
"fmt"
"net/url"
"os"
"strings"
"golang.org/x/tools/internal/lsp/browser"
"golang.org/x/tools/internal/lsp/debug"
)
// version implements the version command.
type version struct {
app *Application
}
// bug implements the bug command.
type bug struct{}
func (v *version) Name() string { return "version" }
func (v *version) Usage() string { return "" }
func (v *version) ShortHelp() string { return "print the gopls version information" }
func (v *version) DetailedHelp(f *flag.FlagSet) {
fmt.Fprint(f.Output(), ``)
f.PrintDefaults()
}
// Run collects some basic information and then prepares an issue ready to
// be reported.
func (v *version) Run(ctx context.Context, args ...string) error {
debug.PrintVersionInfo(os.Stdout, v.app.Verbose, debug.PlainText)
return nil
}
func (b *bug) Name() string { return "bug" }
func (b *bug) Usage() string { return "" }
func (b *bug) ShortHelp() string { return "report a bug in gopls" }
func (b *bug) DetailedHelp(f *flag.FlagSet) {
fmt.Fprint(f.Output(), ``)
f.PrintDefaults()
}
const goplsBugPrefix = "x/tools/gopls: "
const goplsBugHeader = `Please answer these questions before submitting your issue. Thanks!
#### What did you do?
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is better.
A failing unit test is the best.
#### What did you expect to see?
#### What did you see instead?
`
// Run collects some basic information and then prepares an issue ready to
// be reported.
func (b *bug) Run(ctx context.Context, args ...string) error {
buf := &bytes.Buffer{}
fmt.Fprint(buf, goplsBugHeader)
debug.PrintVersionInfo(buf, true, debug.Markdown)
body := buf.String()
title := strings.Join(args, " ")
if !strings.HasPrefix(title, goplsBugPrefix) {
title = goplsBugPrefix + title
}
if !browser.Open("https://github.com/golang/go/issues/new?title=" + url.QueryEscape(title) + "&body=" + url.QueryEscape(body)) {
fmt.Print("Please file a new issue at golang.org/issue/new using this template:\n\n")
fmt.Print(body)
}
return nil
}