`syncthing cli` subcommand was using urfave/cli as the command parser. This PR replace it with kong, which the main command uses. Some help texts and error message format are changed. Other than that, all the command usage and logic remains unchanged. There's only one place which still uses urfave/cli, which is `syncthing cli config`, because it uses some magic to dynamically build commands from struct reflects. I used kong's `passthrough:""` tag to pass any argument following `syncthing cli config` to urfave/cli parser. This PR also fixes #9041 --------- Co-authored-by: Jakob Borg <jakob@kastelo.net>
43 lines
1.5 KiB
Go
43 lines
1.5 KiB
Go
// Copyright (C) 2019 The Syncthing Authors.
|
|
//
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
package cli
|
|
|
|
import (
|
|
"github.com/alecthomas/kong"
|
|
)
|
|
|
|
type showCommand struct {
|
|
Version struct{} `cmd:"" help:"Show syncthing client version"`
|
|
ConfigStatus struct{} `cmd:"" help:"Show configuration status, whether or not a restart is required for changes to take effect"`
|
|
System struct{} `cmd:"" help:"Show system status"`
|
|
Connections struct{} `cmd:"" help:"Report about connections to other devices"`
|
|
Discovery struct{} `cmd:"" help:"Show the discovered addresses of remote devices (from cache of the running syncthing instance)"`
|
|
Usage struct{} `cmd:"" help:"Show usage report"`
|
|
Pending pendingCommand `cmd:"" help:"Pending subcommand group"`
|
|
}
|
|
|
|
func (*showCommand) Run(ctx Context, kongCtx *kong.Context) error {
|
|
indexDumpOutput := indexDumpOutputWrapper(ctx.clientFactory)
|
|
|
|
switch kongCtx.Selected().Name {
|
|
case "version":
|
|
return indexDumpOutput("system/version")
|
|
case "config-status":
|
|
return indexDumpOutput("config/restart-required")
|
|
case "system":
|
|
return indexDumpOutput("system/status")
|
|
case "connections":
|
|
return indexDumpOutput("system/connections")
|
|
case "discovery":
|
|
return indexDumpOutput("system/discovery")
|
|
case "usage":
|
|
return indexDumpOutput("svc/report")
|
|
}
|
|
|
|
return nil
|
|
}
|