-
Notifications
You must be signed in to change notification settings - Fork 224
/
version.go
65 lines (51 loc) · 1.71 KB
/
version.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
package cmd
import (
"context"
"fmt"
"path/filepath"
"github.com/spf13/cobra"
"github.com/superfly/flyctl/cmdctx"
"github.com/superfly/flyctl/flyctl"
"github.com/superfly/flyctl/internal/buildinfo"
"github.com/superfly/flyctl/internal/client"
"github.com/superfly/flyctl/internal/update"
"github.com/superfly/flyctl/docstrings"
)
func newVersionCommand(client *client.Client) *Command {
versionStrings := docstrings.Get("version")
version := BuildCommandKS(nil, runVersion, versionStrings, client)
version.AddStringFlag(StringFlagOpts{
Name: "saveinstall",
Shorthand: "s",
Description: "Save parameter in config",
})
version.Flag("saveinstall").Hidden = true
updateStrings := docstrings.Get("version.update")
BuildCommandKS(version, runUpdate, updateStrings, client)
initStateCmd := BuildCommand(version, runInitState, "init-state", "init-state", "Initialize installation state", client)
initStateCmd.Hidden = true
initStateCmd.Args = cobra.ExactArgs(1)
return version
}
func runVersion(ctx *cmdctx.CmdContext) error {
saveInstall := ctx.Config.GetString("saveinstall")
if saveInstall != "" {
stateFilePath := filepath.Join(flyctl.ConfigDir(), "state.yml")
update.InitState(stateFilePath, saveInstall)
}
info := buildinfo.Info()
if ctx.OutputJSON() {
ctx.WriteJSON(info)
} else {
fmt.Println(info)
}
return nil
}
func runInitState(ctx *cmdctx.CmdContext) error {
stateFilePath := filepath.Join(flyctl.ConfigDir(), "state.yml")
return update.InitState(stateFilePath, ctx.Args[0])
}
func runUpdate(ctx *cmdctx.CmdContext) error {
stateFilePath := filepath.Join(flyctl.ConfigDir(), "state.yml")
return update.PerformInPlaceUpgrade(context.TODO(), stateFilePath, buildinfo.Version())
}