| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // Copyright (C) 2014 Audrius Butkevičius
- package main
- import (
- "encoding/json"
- "fmt"
- "os"
- "github.com/AudriusButkevicius/cli"
- )
- func init() {
- cliCommands = append(cliCommands, []cli.Command{
- {
- Name: "id",
- Usage: "Get ID of the Syncthing client",
- Requires: &cli.Requires{},
- Action: generalID,
- },
- {
- Name: "status",
- Usage: "Configuration status, whether or not a restart is required for changes to take effect",
- Requires: &cli.Requires{},
- Action: generalStatus,
- },
- {
- Name: "config",
- Usage: "Configuration",
- Requires: &cli.Requires{},
- Action: generalConfiguration,
- },
- {
- Name: "restart",
- Usage: "Restart syncthing",
- Requires: &cli.Requires{},
- Action: wrappedHTTPPost("system/restart"),
- },
- {
- Name: "shutdown",
- Usage: "Shutdown syncthing",
- Requires: &cli.Requires{},
- Action: wrappedHTTPPost("system/shutdown"),
- },
- {
- Name: "reset",
- Usage: "Reset syncthing deleting all folders and devices",
- Requires: &cli.Requires{},
- Action: wrappedHTTPPost("system/reset"),
- },
- {
- Name: "upgrade",
- Usage: "Upgrade syncthing (if a newer version is available)",
- Requires: &cli.Requires{},
- Action: wrappedHTTPPost("system/upgrade"),
- },
- {
- Name: "version",
- Usage: "Syncthing client version",
- Requires: &cli.Requires{},
- Action: generalVersion,
- },
- }...)
- }
- func generalID(c *cli.Context) {
- fmt.Println(getMyID(c))
- }
- func generalStatus(c *cli.Context) {
- response := httpGet(c, "system/config/insync")
- var status struct{ ConfigInSync bool }
- json.Unmarshal(responseToBArray(response), &status)
- if !status.ConfigInSync {
- die("Config out of sync")
- }
- fmt.Println("Config in sync")
- }
- func generalConfiguration(c *cli.Context) {
- response := httpGet(c, "system/config")
- var jsResponse interface{}
- json.Unmarshal(responseToBArray(response), &jsResponse)
- enc := json.NewEncoder(os.Stdout)
- enc.SetIndent("", " ")
- enc.Encode(jsResponse)
- }
- func generalVersion(c *cli.Context) {
- response := httpGet(c, "system/version")
- version := make(map[string]interface{})
- json.Unmarshal(responseToBArray(response), &version)
- prettyPrintJSON(version)
- }
|