MCPcopy Create free account
hub / github.com/celer-pkg/celer / doRemovePort

Method doRemovePort

configs/port_remove.go:93–202  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

91}
92
93func (p Port) doRemovePort() error {
94 var noError = true
95 if fileio.PathExists(p.traceFile) {
96 color.Printf(color.Title, "\n[remove installed %s]\n", p.NameVersion())
97
98 defer func() {
99 if noError {
100 color.Printf(color.Hint, "✔ %s is removed from %s\n", p.NameVersion(), p.InstalledDir)
101 }
102 }()
103 }
104
105 if !fileio.PathExists(p.traceFile) {
106 return nil
107 }
108
109 // Open install info file.
110 file, err := os.OpenFile(p.traceFile, os.O_RDONLY, os.ModePerm)
111 if err != nil {
112 noError = false
113 return fmt.Errorf("cannot open install info file: %s", err)
114 }
115
116 // Read line by line to remove installed file.
117 scanner := bufio.NewScanner(file)
118 for scanner.Scan() {
119 // CMake project may generate a checksum file after install,
120 // it would be like "/home/phil/.cmake/packages/gflags/4fbe0d242b1c0f095b87a43a7aeaf0d6",
121 // We'll try to remove it also.
122 line := scanner.Text()
123 fileToRemove := line
124 if !fileio.PathExists(line) {
125 fileToRemove = filepath.Join(dirs.WorkspaceDir, "installed", line)
126 }
127 if err := p.removeFiles(fileToRemove); err != nil {
128 noError = false
129 return fmt.Errorf("cannot remove file -> %w", err)
130 }
131
132 // Try remove parent folder if it's empty.
133 if err := fileio.RemoveFolderRecursively(filepath.Dir(fileToRemove)); err != nil {
134 noError = false
135 return fmt.Errorf("cannot remove parent folder -> %w", err)
136 }
137
138 fmt.Printf("-- remove: %s\n", fileToRemove)
139 }
140 if err := scanner.Err(); err != nil {
141 return err
142 }
143 file.Close()
144
145 // Remove generated cmake config if exist.
146 portName, _, _ := strings.Cut(p.NameVersion(), "@")
147 libraryDir := filepath.Join(p.ctx.Platform().GetName(), p.ctx.Project().GetName(), p.ctx.BuildType())
148 cmakeConfigDir := filepath.Join(dirs.InstalledDir, libraryDir, "lib", "cmake", portName)
149 if err := os.RemoveAll(cmakeConfigDir); err != nil {
150 noError = false

Callers 1

RemoveMethod · 0.95

Calls 10

NameVersionMethod · 0.95
removeFilesMethod · 0.95
PathExistsFunction · 0.92
PrintfFunction · 0.92
RemoveFolderRecursivelyFunction · 0.92
GetNameMethod · 0.65
PlatformMethod · 0.65
ProjectMethod · 0.65
BuildTypeMethod · 0.65
RemoveMethod · 0.45

Tested by

no test coverage detected