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

Method Remove

configs/port_remove.go:16–91  ·  view source on GitHub ↗
(options RemoveOptions)

Source from the content-addressed store, hash-verified

14)
15
16func (p Port) Remove(options RemoveOptions) error {
17 matchedConfig := p.MatchedConfig
18
19 // Try to remove dependencies firstly.
20 if options.Recursive {
21 removeFunc := func(nameVersion string, devDep, hostDev bool) error {
22 // Same name, version as parent and they are booth build with native toolchain, so skip.
23 if (devDep || hostDev) && nameVersion == p.NameVersion() {
24 return nil
25 }
26
27 // Check and validate dependency.
28 var port = Port{
29 DevDep: devDep,
30 HostDep: hostDev,
31 Parent: p.NameVersion(),
32 }
33 if err := port.Init(p.ctx, nameVersion); err != nil {
34 return fmt.Errorf("failed to init dependency %s -> %w", nameVersion, err)
35 }
36
37 // Skip deps that have already been visited in the current
38 // top-level command. Cascade-removing them here would force a
39 // rebuild later when prepareTmpDeps needs the package — every
40 // shared dep would otherwise be rebuilt once per parent.
41 if _, alreadyVisited := visitedPorts[port.visitedKey()]; alreadyVisited {
42 return nil
43 }
44
45 // Remove dependency.
46 if err := port.Remove(options); err != nil {
47 return fmt.Errorf("failed to remove dependency %s -> %w", nameVersion, err)
48 }
49
50 return nil
51 }
52
53 if matchedConfig != nil {
54 for _, nameVersion := range matchedConfig.Dependencies {
55 if err := removeFunc(nameVersion, false, p.DevDep); err != nil {
56 return fmt.Errorf("failed to remove dependency %s -> %w", nameVersion, err)
57 }
58 }
59 for _, nameVersion := range matchedConfig.DevDependencies {
60 if err := removeFunc(nameVersion, true, true); err != nil {
61 return fmt.Errorf("failed to remove dev_dependency %s -> %w", nameVersion, err)
62 }
63 }
64 }
65 }
66
67 // Do remove port itself.
68 if err := p.doRemovePort(); err != nil {
69 return fmt.Errorf("failed to remove port -> %w", err)
70 }
71
72 // Remove port's package files.
73 if options.Purge {

Calls 6

NameVersionMethod · 0.95
doRemovePortMethod · 0.95
removePackageMethod · 0.95
RemoveLogsMethod · 0.95
visitedKeyMethod · 0.80
InitMethod · 0.65