MCPcopy Create free account
hub / github.com/OpenAtomFoundation/SmartIDE / ExecuteStartCmd

Function ExecuteStartCmd

cli/cmd/start/local.go:53–257  ·  view source on GitHub ↗

本地执行 start

(workspaceInfo workspace.WorkspaceInfo, isUnforward bool,
	endPostExecuteFun func(dockerContainerName string, docker common.Docker),
	yamlExecuteFun func(yamlConfig config.SmartIdeConfig, workspaceInfo workspace.WorkspaceInfo, cmdtype, userguid, workspaceid string), args []string, cmd *cobra.Command)

Source from the content-addressed store, hash-verified

51
52// 本地执行 start
53func ExecuteStartCmd(workspaceInfo workspace.WorkspaceInfo, isUnforward bool,
54 endPostExecuteFun func(dockerContainerName string, docker common.Docker),
55 yamlExecuteFun func(yamlConfig config.SmartIdeConfig, workspaceInfo workspace.WorkspaceInfo, cmdtype, userguid, workspaceid string), args []string, cmd *cobra.Command) (
56 workspace.WorkspaceInfo, error) {
57
58 //0. 检查本地环境
59 err := common.CheckLocalEnv()
60 common.CheckError(err)
61
62 //1. 变量
63 //1.1. ctx & cli
64 ctx := context.Background()
65 cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
66 common.CheckError(err)
67
68 //1.2. 私有变量
69 var tempDockerCompose compose.DockerComposeYml // 最后用于运行docker-compose命令的yaml文件
70 var ideBindingPort, sshBindingPort int
71
72 //1.3. 初始化配置文件对象
73 if workspaceInfo.IsNil() {
74 initExtended.InitLocalConfig(cmd, args)
75 }
76 currentConfig, err := config.NewLocalConfig(workspaceInfo.WorkingDirectoryPath, workspaceInfo.ConfigFileRelativePath)
77 common.CheckError(err)
78 //TODO: git pull
79 if workspaceInfo.Addon.IsEnable {
80 workspaceInfo = AddonEnable(workspaceInfo)
81 currentConfig.AddonWebTerminal(workspaceInfo.Name, workspaceInfo.WorkingDirectoryPath)
82 }
83
84 //2. docker-compose
85 //2.1. 获取compose数据
86 configYamlStr, err := currentConfig.ToYaml()
87 common.CheckError(err)
88 linkComposeFileContent, err := currentConfig.Workspace.LinkCompose.ToYaml()
89 common.CheckError(err)
90 hasChanged := workspaceInfo.IsChangeConfig(configYamlStr, linkComposeFileContent) // 是否改变
91 if hasChanged { // 改变包括了初始化
92 // log
93 if workspaceInfo.ID != "" {
94 common.SmartIDELog.Info(i18nInstance.Start.Info_workspace_changed)
95 } else {
96 common.SmartIDELog.Info(i18nInstance.Start.Info_workspace_create)
97 }
98
99 // 获取compose配置
100 tempDockerCompose, ideBindingPort, sshBindingPort =
101 currentConfig.ConvertToDockerCompose(common.SSHRemote{}, workspaceInfo.GetProjectDirctoryName(), "", true, "", nil) // 转换为docker compose格式
102
103 // 更新端口绑定列表,只在改变的时候才需要赋值
104 workspaceInfo.Extend = workspace.WorkspaceExtend{Ports: currentConfig.GetPortMappings()}
105
106 // 保存 docker-compose 、config 文件到临时文件夹
107 workspaceInfo.ConfigYaml = *currentConfig
108 workspaceInfo.TempDockerCompose = tempDockerCompose
109 err = workspaceInfo.SaveTempFiles() // 保存docker-compose文件
110 common.CheckError(err)

Callers

nothing calls this directly

Calls 15

AppendPortMappingMethod · 0.95
AddonEnableFunction · 0.85
isDockerComposeRunningFunction · 0.85
getDevContainerNameFunction · 0.85
AddonWebTerminalMethod · 0.80
IsChangeConfigMethod · 0.80
InfoMethod · 0.80

Tested by

no test coverage detected