Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/gitpod-cli/generate-theia-protocol.go
2492 views
1
// Copyright (c) 2020 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
//go:build ignore
6
// +build ignore
7
8
package main
9
10
import (
11
"fmt"
12
"os"
13
14
"github.com/32leaves/bel"
15
"github.com/gitpod-io/gitpod/gitpod-cli/pkg/theialib"
16
"github.com/iancoleman/strcase"
17
)
18
19
func main() {
20
ts, err := bel.Extract((*theialib.TheiaCLIService)(nil),
21
bel.FollowStructs,
22
bel.SortAlphabetically,
23
)
24
if err != nil {
25
panic(err)
26
}
27
28
for _, tp := range ts {
29
if tp.Name != "TheiaCLIService" {
30
continue
31
}
32
33
for i := range tp.Members {
34
tp.Members[i].Name = strcase.ToLowerCamel(tp.Members[i].Name)
35
tp.Members[i].Type.Name = fmt.Sprintf("Promise<%s>", tp.Members[i].Type.Name)
36
}
37
38
break
39
}
40
41
out := os.Stdout
42
if len(os.Args) > 1 {
43
f, err := os.OpenFile(os.Args[1], os.O_WRONLY|os.O_CREATE, 0644)
44
if err != nil {
45
panic(err)
46
}
47
defer f.Close()
48
out = f
49
}
50
51
err = bel.Render(ts,
52
bel.GenerateAdditionalPreamble("\n// re-generate using `cd devops/images/workspace-image-builder/gitpod-cli && go generate ./...`\n"),
53
bel.GenerateAdditionalPreamble("\nexport const TheiaCLIService = Symbol('TheiaCLIService');\n"),
54
bel.GenerateAdditionalPreamble("export const SERVICE_PATH = '/services/cli';\n"),
55
bel.GenerateOutputTo(out),
56
)
57
if err != nil {
58
panic(err)
59
}
60
}
61
62