forked from NebulousLabs/Sia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
daemoncmd.go
110 lines (98 loc) · 2.42 KB
/
daemoncmd.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package main
import (
"fmt"
"github.com/NebulousLabs/Sia/build"
"github.com/NebulousLabs/Sia/node/api"
"github.com/spf13/cobra"
)
var (
stopCmd = &cobra.Command{
Use: "stop",
Short: "Stop the Sia daemon",
Long: "Stop the Sia daemon.",
Run: wrap(stopcmd),
}
updateCheckCmd = &cobra.Command{
Use: "check",
Short: "Check for available updates",
Long: "Check for available updates.",
Run: wrap(updatecheckcmd),
}
updateCmd = &cobra.Command{
Use: "update",
Short: "Update Sia",
Long: "Check for (and/or download) available updates for Sia.",
Run: wrap(updatecmd),
}
versionCmd = &cobra.Command{
Use: "version",
Short: "Print version information",
Long: "Print version information.",
Run: wrap(versioncmd),
}
)
type updateInfo struct {
Available bool `json:"available"`
Version string `json:"version"`
}
// version prints the version of siac and siad.
func versioncmd() {
fmt.Println("Sia Client")
fmt.Println("\tVersion " + build.Version)
if build.GitRevision != "" {
fmt.Println("\tGit Revision " + build.GitRevision)
fmt.Println("\tBuild Time " + build.BuildTime)
}
var dvg api.DaemonVersionGet
err := getAPI("/daemon/version", &dvg)
if err != nil {
fmt.Println("Could not get daemon version:", err)
return
}
fmt.Println("Sia Daemon")
fmt.Println("\tVersion " + dvg.Version)
if build.GitRevision != "" {
fmt.Println("\tGit Revision " + dvg.GitRevision)
fmt.Println("\tBuild Time " + dvg.BuildTime)
}
}
// stopcmd is the handler for the command `siac stop`.
// Stops the daemon.
func stopcmd() {
err := get("/daemon/stop")
if err != nil {
die("Could not stop daemon:", err)
}
fmt.Println("Sia daemon stopped.")
}
func updatecmd() {
var update updateInfo
err := getAPI("/daemon/update", &update)
if err != nil {
fmt.Println("Could not check for update:", err)
return
}
if !update.Available {
fmt.Println("Already up to date.")
return
}
err = post("/daemon/update", "")
if err != nil {
fmt.Println("Could not apply update:", err)
return
}
fmt.Printf("Updated to version %s! Restart siad now.\n", update.Version)
}
func updatecheckcmd() {
var update updateInfo
err := getAPI("/daemon/update", &update)
if err != nil {
fmt.Println("Could not check for update:", err)
return
}
if update.Available {
fmt.Printf("A new release (v%s) is available! Run 'siac update' to install it.\n", update.Version)
} else {
fmt.Println("Up to date.")
}
}