Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/ee/agent-smith/cmd/testbed/main.go
2501 views
1
// Copyright (c) 2022 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 main
6
7
import (
8
"fmt"
9
"log"
10
"os"
11
"os/exec"
12
"strings"
13
)
14
15
// runCmd represents the run command
16
func run(args []string) error {
17
if len(args) > 0 && args[0] == "ring1" {
18
self, err := os.Executable()
19
if err != nil {
20
return err
21
}
22
err = os.Symlink(self, "supervisor")
23
if err != nil && !os.IsExist(err) {
24
return err
25
}
26
27
cmd := exec.Command("supervisor", "run")
28
cmd.Stdout = os.Stdout
29
cmd.Stdin = os.Stdin
30
cmd.Stderr = os.Stderr
31
err = cmd.Run()
32
if err != nil {
33
return err
34
}
35
36
return nil
37
}
38
39
if len(args) > 0 && args[0] == "run" {
40
var err error
41
cmd := exec.Command("bash")
42
cmd.Stdout = os.Stdout
43
cmd.Stdin = os.Stdin
44
cmd.Stderr = os.Stderr
45
err = cmd.Run()
46
if err != nil {
47
return err
48
}
49
return nil
50
}
51
52
if len(args) > 0 && args[0] == "start" {
53
cwd, err := os.Getwd()
54
if err != nil {
55
return err
56
}
57
env := os.Environ()
58
for i, e := range env {
59
if strings.HasPrefix(e, "PATH=") {
60
env[i] += e + ":" + cwd
61
}
62
}
63
env = append(env, "GITPOD_OWNER_ID=owner-id")
64
env = append(env, "GITPOD_WORKSPACE_ID=workspace-id")
65
env = append(env, "GITPOD_INSTANCE_ID=instance-id")
66
env = append(env, "GITPOD_WORKSPACE_CONTEXT_URL=https://github.com/gitpod-io/gitpod")
67
68
cmd := exec.Command("/proc/self/exe", "ring1")
69
cmd.Stdout = os.Stdout
70
cmd.Stdin = os.Stdin
71
cmd.Stderr = os.Stderr
72
cmd.Env = env
73
err = cmd.Run()
74
if err != nil {
75
return err
76
}
77
}
78
79
fmt.Println("run with \"testbed start\"")
80
81
return nil
82
}
83
84
func main() {
85
err := run(os.Args[1:])
86
if err != nil {
87
log.Fatal(err)
88
}
89
}
90
91