Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/install/installer/cmd/version.go
2498 views
1
// Copyright (c) 2021 Gitpod GmbH. All rights reserved.
2
// Licensed under the GNU Affero General Public License (AGPL).
3
// See License.AGPL.txt in the project root for license information.
4
5
package cmd
6
7
import (
8
"debug/elf"
9
"fmt"
10
"io/ioutil"
11
"os"
12
13
"github.com/gitpod-io/gitpod/installer/pkg/common"
14
"github.com/gitpod-io/gitpod/installer/pkg/config/versions"
15
"sigs.k8s.io/yaml"
16
17
"github.com/spf13/cobra"
18
)
19
20
// versionCmd represents the version command
21
var versionCmd = &cobra.Command{
22
Use: "version",
23
Short: "Display the version information",
24
RunE: func(cmd *cobra.Command, args []string) error {
25
versionMF, err := getVersionManifest()
26
if err != nil {
27
return err
28
}
29
30
versions, err := common.ToJSONString(versionMF)
31
if err != nil {
32
return err
33
}
34
35
fmt.Println(string(versions))
36
37
return nil
38
},
39
}
40
41
func getVersionManifest() (*versions.Manifest, error) {
42
embeddedManifest, err := versions.Embedded()
43
if err != nil {
44
return nil, err
45
}
46
if embeddedManifest != nil {
47
return embeddedManifest, nil
48
}
49
50
var data []byte
51
if rootOpts.VersionMF != "" {
52
var err error
53
data, err = ioutil.ReadFile(rootOpts.VersionMF)
54
if err != nil {
55
return nil, err
56
}
57
} else {
58
selfPath, err := os.Executable()
59
if err != nil {
60
return nil, err
61
}
62
selfFile, err := os.Open(selfPath)
63
if err != nil {
64
return nil, err
65
}
66
selfElf, err := elf.NewFile(selfFile)
67
if err != nil {
68
return nil, err
69
}
70
for _, s := range selfElf.Sections {
71
if s.Name == "versionManifest" {
72
data, _ = s.Data()
73
}
74
}
75
76
}
77
78
var res versions.Manifest
79
err = yaml.Unmarshal(data, &res)
80
if err != nil {
81
return nil, err
82
}
83
84
return &res, nil
85
}
86
87
func init() {
88
rootCmd.AddCommand(versionCmd)
89
}
90
91