mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-11-02 01:07:28 -04:00
49 lines
986 B
Go
49 lines
986 B
Go
|
package command
|
||
|
|
||
|
//go:generate errorgen
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
|
||
|
"github.com/gogo/protobuf/proto"
|
||
|
"v2ray.com/core/common"
|
||
|
"v2ray.com/core/infra/conf/serial"
|
||
|
"v2ray.com/core/infra/control"
|
||
|
)
|
||
|
|
||
|
type ConfigCommand struct{}
|
||
|
|
||
|
func (c *ConfigCommand) Name() string {
|
||
|
return "config"
|
||
|
}
|
||
|
|
||
|
func (c *ConfigCommand) Description() control.Description {
|
||
|
return control.Description{
|
||
|
Short: "Convert config among different formats.",
|
||
|
Usage: []string{
|
||
|
"v2ctl config",
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (c *ConfigCommand) Execute(args []string) error {
|
||
|
pbConfig, err := serial.LoadJSONConfig(os.Stdin)
|
||
|
if err != nil {
|
||
|
return newError("failed to parse json config").Base(err)
|
||
|
}
|
||
|
|
||
|
bytesConfig, err := proto.Marshal(pbConfig)
|
||
|
if err != nil {
|
||
|
return newError("failed to marshal proto config").Base(err)
|
||
|
}
|
||
|
|
||
|
if _, err := os.Stdout.Write(bytesConfig); err != nil {
|
||
|
return newError("failed to write proto config").Base(err)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
common.Must(control.RegisterCommand(&ConfigCommand{}))
|
||
|
}
|