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

Function RemoveLocal

cli/cmd/remove/local.go:34–111  ·  view source on GitHub ↗

本地删除工作去对应的环境

(workspaceInfo workspace.WorkspaceInfo, isRemoveAllComposeImages bool, isForce bool)

Source from the content-addressed store, hash-verified

32
33// 本地删除工作去对应的环境
34func RemoveLocal(workspaceInfo workspace.WorkspaceInfo, isRemoveAllComposeImages bool, isForce bool) error {
35 // 校验是否能正常执行docker
36 err := common.CheckLocalEnv()
37 if err != nil {
38 return err
39 }
40
41 if !common.IsExist(workspaceInfo.WorkingDirectoryPath) {
42 if isForce {
43 common.SmartIDELog.Importance(i18nInstance.Remove.Warn_workspace_dir_not_exit)
44 // 中断,不再执行后续的步骤
45 return nil
46 } else {
47 return errors.New(i18nInstance.Remove.Err_workspace_dir_not_exit)
48 }
49 }
50
51 // 保存临时文件
52 if !common.IsExist(workspaceInfo.TempYamlFileAbsolutePath) || !common.IsExist(workspaceInfo.ConfigFileRelativePath) {
53 workspaceInfo.SaveTempFiles()
54
55 }
56
57 // 关联的容器
58 ctx := context.Background()
59 cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
60 if err != nil {
61 return err
62 }
63 containers := start.GetLocalContainersWithServices(ctx, cli,
64 workspaceInfo.WorkingDirectoryPath, workspaceInfo.ConfigYaml.GetServiceNames())
65 if len(containers) <= 0 {
66 common.SmartIDELog.Importance(i18nInstance.Start.Warn_docker_container_getnone)
67 }
68
69 // docker-compose 删除容器
70 if len(containers) > 0 {
71 common.SmartIDELog.Info(i18nInstance.Remove.Info_docker_removing)
72 composeCmd := exec.Command("docker-compose", "-f", workspaceInfo.TempYamlFileAbsolutePath, "--project-directory", workspaceInfo.WorkingDirectoryPath, "down", "-v")
73 composeCmd.Stdout = os.Stdout
74 composeCmd.Stderr = os.Stderr
75 if composeCmdErr := composeCmd.Run(); composeCmdErr != nil {
76 //common.SmartIDELog.Fatal(composeCmdErr)
77 if composeCmdErr != nil {
78 return composeCmdErr
79 }
80
81 }
82 }
83
84 // remove images
85 if isRemoveAllComposeImages {
86 common.SmartIDELog.Info(i18nInstance.Remove.Info_docker_rmi_removing)
87
88 for _, service := range workspaceInfo.TempDockerCompose.Services {
89 if service.Image != "" { // 镜像信息不为空
90 force := ""
91 if isForce {

Callers

nothing calls this directly

Calls 9

IsExistMethod · 0.80
ImportanceMethod · 0.80
SaveTempFilesMethod · 0.80
GetServiceNamesMethod · 0.80
InfoMethod · 0.80
RunMethod · 0.80
InfoFMethod · 0.80
RemoveSSHConfigMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected