51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
// Copyright (c) 2021 Tailscale Inc & 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 cli
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"flag"
|
|
|
|
"github.com/peterbourgon/ff/v3/ffcli"
|
|
"tailscale.com/client/tailscale"
|
|
)
|
|
|
|
var bugReportCmd = &ffcli.Command{
|
|
Name: "bugreport",
|
|
Exec: runBugReport,
|
|
ShortHelp: "Print a shareable identifier to help diagnose issues",
|
|
ShortUsage: "bugreport [note]",
|
|
FlagSet: (func() *flag.FlagSet {
|
|
fs := newFlagSet("bugreport")
|
|
fs.BoolVar(&bugReportArgs.diagnose, "diagnose", false, "run additional in-depth checks")
|
|
return fs
|
|
})(),
|
|
}
|
|
|
|
var bugReportArgs struct {
|
|
diagnose bool
|
|
}
|
|
|
|
func runBugReport(ctx context.Context, args []string) error {
|
|
var note string
|
|
switch len(args) {
|
|
case 0:
|
|
case 1:
|
|
note = args[0]
|
|
default:
|
|
return errors.New("unknown arguments")
|
|
}
|
|
logMarker, err := localClient.BugReportWithOpts(ctx, tailscale.BugReportOpts{
|
|
Note: note,
|
|
Diagnose: bugReportArgs.diagnose,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
outln(logMarker)
|
|
return nil
|
|
}
|