cmd/stcli: Make it build again

This commit is contained in:
Jakob Borg 2016-12-17 01:27:48 +01:00
parent d8d3f05164
commit 81a9d7f2b9
8 changed files with 52 additions and 51 deletions

View File

@ -30,7 +30,7 @@ func init() {
Name: "clear", Name: "clear",
Usage: "Clear pending errors", Usage: "Clear pending errors",
Requires: &cli.Requires{}, Requires: &cli.Requires{},
Action: wrappedHttpPost("system/error/clear"), Action: wrappedHTTPPost("system/error/clear"),
}, },
}, },
}) })

View File

@ -102,7 +102,7 @@ func foldersList(c *cli.Context) {
} }
fmt.Fprintln(writer, "ID:\t", folder.ID, "\t") fmt.Fprintln(writer, "ID:\t", folder.ID, "\t")
fmt.Fprintln(writer, "Path:\t", folder.RawPath, "\t(directory)") fmt.Fprintln(writer, "Path:\t", folder.RawPath, "\t(directory)")
fmt.Fprintln(writer, "Folder master:\t", folder.ReadOnly, "\t(master)") fmt.Fprintln(writer, "Folder type:\t", folder.Type, "\t(type)")
fmt.Fprintln(writer, "Ignore permissions:\t", folder.IgnorePerms, "\t(permissions)") fmt.Fprintln(writer, "Ignore permissions:\t", folder.IgnorePerms, "\t(permissions)")
fmt.Fprintln(writer, "Rescan interval in seconds:\t", folder.RescanIntervalS, "\t(rescan)") fmt.Fprintln(writer, "Rescan interval in seconds:\t", folder.RescanIntervalS, "\t(rescan)")
@ -112,9 +112,6 @@ func foldersList(c *cli.Context) {
fmt.Fprintf(writer, "Versioning %s:\t %s \t(versioning-%s)\n", key, value, key) fmt.Fprintf(writer, "Versioning %s:\t %s \t(versioning-%s)\n", key, value, key)
} }
} }
if folder.Invalid != "" {
fmt.Fprintln(writer, "Invalid:\t", folder.Invalid, "\t")
}
first = false first = false
} }
writer.Flush() writer.Flush()
@ -151,7 +148,7 @@ func foldersOverride(c *cli.Context) {
cfg := getConfig(c) cfg := getConfig(c)
rid := c.Args()[0] rid := c.Args()[0]
for _, folder := range cfg.Folders { for _, folder := range cfg.Folders {
if folder.ID == rid && folder.ReadOnly { if folder.ID == rid && folder.Type == config.FolderTypeReadOnly {
response := httpPost(c, "db/override", "") response := httpPost(c, "db/override", "")
if response.StatusCode != 200 { if response.StatusCode != 200 {
err := fmt.Sprint("Failed to override changes\nStatus code: ", response.StatusCode) err := fmt.Sprint("Failed to override changes\nStatus code: ", response.StatusCode)
@ -187,8 +184,8 @@ func foldersGet(c *cli.Context) {
switch arg { switch arg {
case "directory": case "directory":
fmt.Println(folder.RawPath) fmt.Println(folder.RawPath)
case "master": case "type":
fmt.Println(folder.ReadOnly) fmt.Println(folder.Type)
case "permissions": case "permissions":
fmt.Println(folder.IgnorePerms) fmt.Println(folder.IgnorePerms)
case "rescan": case "rescan":
@ -198,7 +195,7 @@ func foldersGet(c *cli.Context) {
fmt.Println(folder.Versioning.Type) fmt.Println(folder.Versioning.Type)
} }
default: default:
die("Invalid property: " + c.Args()[1] + "\nAvailable properties: directory, master, permissions, versioning, versioning-<key>") die("Invalid property: " + c.Args()[1] + "\nAvailable properties: directory, type, permissions, versioning, versioning-<key>")
} }
return return
} }
@ -222,8 +219,12 @@ func foldersSet(c *cli.Context) {
switch arg { switch arg {
case "directory": case "directory":
cfg.Folders[i].RawPath = val cfg.Folders[i].RawPath = val
case "master": case "type":
cfg.Folders[i].ReadOnly = parseBool(val) var t config.FolderType
if err := t.UnmarshalText([]byte(val)); err != nil {
die("Invalid folder type: " + err.Error())
}
cfg.Folders[i].Type = t
case "permissions": case "permissions":
cfg.Folders[i].IgnorePerms = parseBool(val) cfg.Folders[i].IgnorePerms = parseBool(val)
case "rescan": case "rescan":

View File

@ -25,25 +25,25 @@ func init() {
Name: "restart", Name: "restart",
Usage: "Restart syncthing", Usage: "Restart syncthing",
Requires: &cli.Requires{}, Requires: &cli.Requires{},
Action: wrappedHttpPost("system/restart"), Action: wrappedHTTPPost("system/restart"),
}, },
{ {
Name: "shutdown", Name: "shutdown",
Usage: "Shutdown syncthing", Usage: "Shutdown syncthing",
Requires: &cli.Requires{}, Requires: &cli.Requires{},
Action: wrappedHttpPost("system/shutdown"), Action: wrappedHTTPPost("system/shutdown"),
}, },
{ {
Name: "reset", Name: "reset",
Usage: "Reset syncthing deleting all folders and devices", Usage: "Reset syncthing deleting all folders and devices",
Requires: &cli.Requires{}, Requires: &cli.Requires{},
Action: wrappedHttpPost("system/reset"), Action: wrappedHTTPPost("system/reset"),
}, },
{ {
Name: "upgrade", Name: "upgrade",
Usage: "Upgrade syncthing (if a newer version is available)", Usage: "Upgrade syncthing (if a newer version is available)",
Requires: &cli.Requires{}, Requires: &cli.Requires{},
Action: wrappedHttpPost("system/upgrade"), Action: wrappedHTTPPost("system/upgrade"),
}, },
{ {
Name: "version", Name: "version",
@ -72,5 +72,5 @@ func generalVersion(c *cli.Context) {
response := httpGet(c, "system/version") response := httpGet(c, "system/version")
version := make(map[string]interface{}) version := make(map[string]interface{})
json.Unmarshal(responseToBArray(response), &version) json.Unmarshal(responseToBArray(response), &version)
prettyPrintJson(version) prettyPrintJSON(version)
} }

View File

@ -45,8 +45,8 @@ func guiDump(c *cli.Context) {
cfg := getConfig(c).GUI cfg := getConfig(c).GUI
writer := newTableWriter() writer := newTableWriter()
fmt.Fprintln(writer, "Enabled:\t", cfg.Enabled, "\t(enabled)") fmt.Fprintln(writer, "Enabled:\t", cfg.Enabled, "\t(enabled)")
fmt.Fprintln(writer, "Use HTTPS:\t", cfg.UseTLS, "\t(tls)") fmt.Fprintln(writer, "Use HTTPS:\t", cfg.UseTLS(), "\t(tls)")
fmt.Fprintln(writer, "Listen Addresses:\t", cfg.Address, "\t(address)") fmt.Fprintln(writer, "Listen Addresses:\t", cfg.Address(), "\t(address)")
if cfg.User != "" { if cfg.User != "" {
fmt.Fprintln(writer, "Authentication User:\t", cfg.User, "\t(username)") fmt.Fprintln(writer, "Authentication User:\t", cfg.User, "\t(username)")
fmt.Fprintln(writer, "Authentication Password:\t", cfg.Password, "\t(password)") fmt.Fprintln(writer, "Authentication Password:\t", cfg.Password, "\t(password)")
@ -64,9 +64,9 @@ func guiGet(c *cli.Context) {
case "enabled": case "enabled":
fmt.Println(cfg.Enabled) fmt.Println(cfg.Enabled)
case "tls": case "tls":
fmt.Println(cfg.UseTLS) fmt.Println(cfg.UseTLS())
case "address": case "address":
fmt.Println(cfg.Address) fmt.Println(cfg.Address())
case "user": case "user":
if cfg.User != "" { if cfg.User != "" {
fmt.Println(cfg.User) fmt.Println(cfg.User)
@ -92,10 +92,10 @@ func guiSet(c *cli.Context) {
case "enabled": case "enabled":
cfg.GUI.Enabled = parseBool(val) cfg.GUI.Enabled = parseBool(val)
case "tls": case "tls":
cfg.GUI.UseTLS = parseBool(val) cfg.GUI.RawUseTLS = parseBool(val)
case "address": case "address":
validAddress(val) validAddress(val)
cfg.GUI.Address = val cfg.GUI.RawAddress = val
case "user": case "user":
cfg.GUI.User = val cfg.GUI.User = val
case "password": case "password":

View File

@ -39,7 +39,7 @@ func optionsDump(c *cli.Context) {
cfg := getConfig(c).Options cfg := getConfig(c).Options
writer := newTableWriter() writer := newTableWriter()
fmt.Fprintln(writer, "Sync protocol listen addresses:\t", strings.Join(cfg.ListenAddress, " "), "\t(address)") fmt.Fprintln(writer, "Sync protocol listen addresses:\t", strings.Join(cfg.ListenAddresses, " "), "\t(addresses)")
fmt.Fprintln(writer, "Global discovery enabled:\t", cfg.GlobalAnnEnabled, "\t(globalannenabled)") fmt.Fprintln(writer, "Global discovery enabled:\t", cfg.GlobalAnnEnabled, "\t(globalannenabled)")
fmt.Fprintln(writer, "Global discovery servers:\t", strings.Join(cfg.GlobalAnnServers, " "), "\t(globalannserver)") fmt.Fprintln(writer, "Global discovery servers:\t", strings.Join(cfg.GlobalAnnServers, " "), "\t(globalannserver)")
@ -50,9 +50,9 @@ func optionsDump(c *cli.Context) {
fmt.Fprintln(writer, "Incoming rate limit in KiB/s:\t", cfg.MaxRecvKbps, "\t(maxrecv)") fmt.Fprintln(writer, "Incoming rate limit in KiB/s:\t", cfg.MaxRecvKbps, "\t(maxrecv)")
fmt.Fprintln(writer, "Reconnect interval in seconds:\t", cfg.ReconnectIntervalS, "\t(reconnect)") fmt.Fprintln(writer, "Reconnect interval in seconds:\t", cfg.ReconnectIntervalS, "\t(reconnect)")
fmt.Fprintln(writer, "Start browser:\t", cfg.StartBrowser, "\t(browser)") fmt.Fprintln(writer, "Start browser:\t", cfg.StartBrowser, "\t(browser)")
fmt.Fprintln(writer, "Enable UPnP:\t", cfg.UPnPEnabled, "\t(upnp)") fmt.Fprintln(writer, "Enable UPnP:\t", cfg.NATEnabled, "\t(nat)")
fmt.Fprintln(writer, "UPnP Lease in minutes:\t", cfg.UPnPLeaseM, "\t(upnplease)") fmt.Fprintln(writer, "UPnP Lease in minutes:\t", cfg.NATLeaseM, "\t(natlease)")
fmt.Fprintln(writer, "UPnP Renewal period in minutes:\t", cfg.UPnPRenewalM, "\t(upnprenew)") fmt.Fprintln(writer, "UPnP Renewal period in minutes:\t", cfg.NATRenewalM, "\t(natrenew)")
fmt.Fprintln(writer, "Restart on Wake Up:\t", cfg.RestartOnWakeup, "\t(wake)") fmt.Fprintln(writer, "Restart on Wake Up:\t", cfg.RestartOnWakeup, "\t(wake)")
reporting := "unrecognized value" reporting := "unrecognized value"
@ -74,7 +74,7 @@ func optionsGet(c *cli.Context) {
arg := c.Args()[0] arg := c.Args()[0]
switch strings.ToLower(arg) { switch strings.ToLower(arg) {
case "address": case "address":
fmt.Println(strings.Join(cfg.ListenAddress, "\n")) fmt.Println(strings.Join(cfg.ListenAddresses, "\n"))
case "globalannenabled": case "globalannenabled":
fmt.Println(cfg.GlobalAnnEnabled) fmt.Println(cfg.GlobalAnnEnabled)
case "globalannservers": case "globalannservers":
@ -91,12 +91,12 @@ func optionsGet(c *cli.Context) {
fmt.Println(cfg.ReconnectIntervalS) fmt.Println(cfg.ReconnectIntervalS)
case "browser": case "browser":
fmt.Println(cfg.StartBrowser) fmt.Println(cfg.StartBrowser)
case "upnp": case "nat":
fmt.Println(cfg.UPnPEnabled) fmt.Println(cfg.NATEnabled)
case "upnplease": case "natlease":
fmt.Println(cfg.UPnPLeaseM) fmt.Println(cfg.NATLeaseM)
case "upnprenew": case "natrenew":
fmt.Println(cfg.UPnPRenewalM) fmt.Println(cfg.NATRenewalM)
case "reporting": case "reporting":
switch cfg.URAccepted { switch cfg.URAccepted {
case -1: case -1:
@ -124,7 +124,7 @@ func optionsSet(c *cli.Context) {
for _, item := range c.Args().Tail() { for _, item := range c.Args().Tail() {
validAddress(item) validAddress(item)
} }
config.Options.ListenAddress = c.Args().Tail() config.Options.ListenAddresses = c.Args().Tail()
case "globalannenabled": case "globalannenabled":
config.Options.GlobalAnnEnabled = parseBool(val) config.Options.GlobalAnnEnabled = parseBool(val)
case "globalannserver": case "globalannserver":
@ -144,12 +144,12 @@ func optionsSet(c *cli.Context) {
config.Options.ReconnectIntervalS = parseUint(val) config.Options.ReconnectIntervalS = parseUint(val)
case "browser": case "browser":
config.Options.StartBrowser = parseBool(val) config.Options.StartBrowser = parseBool(val)
case "upnp": case "nat":
config.Options.UPnPEnabled = parseBool(val) config.Options.NATEnabled = parseBool(val)
case "upnplease": case "natlease":
config.Options.UPnPLeaseM = parseUint(val) config.Options.NATLeaseM = parseUint(val)
case "upnprenew": case "natrenew":
config.Options.UPnPRenewalM = parseUint(val) config.Options.NATRenewalM = parseUint(val)
case "reporting": case "reporting":
switch strings.ToLower(val) { switch strings.ToLower(val) {
case "u", "undecided", "unset": case "u", "undecided", "unset":

View File

@ -39,7 +39,7 @@ func reportSystem(c *cli.Context) {
response := httpGet(c, "system/status") response := httpGet(c, "system/status")
data := make(map[string]interface{}) data := make(map[string]interface{})
json.Unmarshal(responseToBArray(response), &data) json.Unmarshal(responseToBArray(response), &data)
prettyPrintJson(data) prettyPrintJSON(data)
} }
func reportConnections(c *cli.Context) { func reportConnections(c *cli.Context) {
@ -53,12 +53,12 @@ func reportConnections(c *cli.Context) {
continue continue
} }
value["Device ID"] = key value["Device ID"] = key
prettyPrintJson(value) prettyPrintJSON(value)
fmt.Println() fmt.Println()
} }
if overall != nil { if overall != nil {
fmt.Println("=== Overall statistics ===") fmt.Println("=== Overall statistics ===")
prettyPrintJson(overall) prettyPrintJSON(overall)
} }
} }
@ -66,5 +66,5 @@ func reportUsage(c *cli.Context) {
response := httpGet(c, "svc/report") response := httpGet(c, "svc/report")
report := make(map[string]interface{}) report := make(map[string]interface{})
json.Unmarshal(responseToBArray(response), &report) json.Unmarshal(responseToBArray(response), &report)
prettyPrintJson(report) prettyPrintJSON(report)
} }

View File

@ -1,6 +1,6 @@
package main package main
var jsonAttributeLabels map[string]string = map[string]string{ var jsonAttributeLabels = map[string]string{
"folderMaxMiB": "Largest folder size in MiB", "folderMaxMiB": "Largest folder size in MiB",
"folderMaxFiles": "Largest folder file count", "folderMaxFiles": "Largest folder file count",
"longVersion": "Long version", "longVersion": "Long version",

View File

@ -34,13 +34,13 @@ func die(vals ...interface{}) {
} }
} }
func wrappedHttpPost(url string) func(c *cli.Context) { func wrappedHTTPPost(url string) func(c *cli.Context) {
return func(c *cli.Context) { return func(c *cli.Context) {
httpPost(c, url, "") httpPost(c, url, "")
} }
} }
func prettyPrintJson(json map[string]interface{}) { func prettyPrintJSON(json map[string]interface{}) {
writer := newTableWriter() writer := newTableWriter()
remap := make(map[string]interface{}) remap := make(map[string]interface{})
for k, v := range json { for k, v := range json {
@ -51,12 +51,12 @@ func prettyPrintJson(json map[string]interface{}) {
remap[key] = v remap[key] = v
} }
json_keys := make([]string, 0, len(remap)) jsonKeys := make([]string, 0, len(remap))
for key := range remap { for key := range remap {
json_keys = append(json_keys, key) jsonKeys = append(jsonKeys, key)
} }
sort.Strings(json_keys) sort.Strings(jsonKeys)
for _, k := range json_keys { for _, k := range jsonKeys {
value := "" value := ""
rvalue := remap[k] rvalue := remap[k]
switch rvalue.(type) { switch rvalue.(type) {