MCPcopy
hub / github.com/Jguer/yay / cleanAUR

Function cleanAUR

clean.go:118–191  ·  view source on GitHub ↗
(ctx context.Context, run *runtime.Runtime,
	keepInstalled, keepCurrent, removeAll bool, dbExecutor db.Executor,
)

Source from the content-addressed store, hash-verified

116}
117
118func cleanAUR(ctx context.Context, run *runtime.Runtime,
119 keepInstalled, keepCurrent, removeAll bool, dbExecutor db.Executor,
120) error {
121 run.Logger.Println(gotext.Get("removing AUR packages from cache..."))
122
123 installedBases := mapset.NewThreadUnsafeSet[string]()
124 inAURBases := mapset.NewThreadUnsafeSet[string]()
125
126 remotePackages := dbExecutor.InstalledRemotePackages()
127
128 files, err := os.ReadDir(run.Cfg.BuildDir)
129 if err != nil {
130 return err
131 }
132
133 cachedPackages := make([]string, 0, len(files))
134
135 for _, file := range files {
136 if !file.IsDir() {
137 continue
138 }
139
140 cachedPackages = append(cachedPackages, file.Name())
141 }
142
143 // Most people probably don't use keep current and that is the only
144 // case where this is needed.
145 // Querying the AUR is slow and needs internet so don't do it if we
146 // don't need to.
147 if keepCurrent {
148 info, errInfo := run.AURClient.Get(ctx, &aur.Query{
149 Needles: cachedPackages,
150 })
151 if errInfo != nil {
152 return errInfo
153 }
154
155 for i := range info {
156 inAURBases.Add(info[i].PackageBase)
157 }
158 }
159
160 for _, pkg := range remotePackages {
161 if pkg.Base() != "" {
162 installedBases.Add(pkg.Base())
163 } else {
164 installedBases.Add(pkg.Name())
165 }
166 }
167
168 for _, file := range files {
169 if !file.IsDir() {
170 continue
171 }
172
173 if !removeAll {
174 if keepInstalled && installedBases.Contains(file.Name()) {
175 continue

Callers 1

syncCleanFunction · 0.85

Calls 9

PrintlnMethod · 0.80
BaseMethod · 0.80
ContainsMethod · 0.80
DebuglnMethod · 0.80
WarnlnMethod · 0.80
GetMethod · 0.65
NameMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected