MCPcopy Index your code
hub / github.com/aptly-dev/aptly / PackageQuery

Method PackageQuery

deb/changes.go:170–217  ·  view source on GitHub ↗

PackageQuery returns query that every package should match to be included

()

Source from the content-addressed store, hash-verified

168
169// PackageQuery returns query that every package should match to be included
170func (c *Changes) PackageQuery() PackageQuery {
171 var archQuery PackageQuery = &FieldQuery{Field: "$Architecture", Relation: VersionEqual, Value: ""}
172 for _, arch := range c.Architectures {
173 archQuery = &OrQuery{L: &FieldQuery{Field: "$Architecture", Relation: VersionEqual, Value: arch}, R: archQuery}
174 }
175
176 // if c.Source is empty, this would never match
177 sourceQuery := &AndQuery{
178 L: &FieldQuery{Field: "$PackageType", Relation: VersionEqual, Value: ArchitectureSource},
179 R: &FieldQuery{Field: "Name", Relation: VersionEqual, Value: c.Source},
180 }
181
182 var binaryQuery PackageQuery
183 if len(c.Binary) > 0 {
184 binaryQuery = &FieldQuery{Field: "Name", Relation: VersionEqual, Value: c.Binary[0]}
185 // matching debug ddeb packages, they're not present in the Binary field
186 var ddebQuery PackageQuery = &FieldQuery{Field: "Name", Relation: VersionEqual, Value: fmt.Sprintf("%s-dbgsym", c.Binary[0])}
187
188 for _, binary := range c.Binary[1:] {
189 binaryQuery = &OrQuery{
190 L: &FieldQuery{Field: "Name", Relation: VersionEqual, Value: binary},
191 R: binaryQuery,
192 }
193 ddebQuery = &OrQuery{
194 L: &FieldQuery{Field: "Name", Relation: VersionEqual, Value: fmt.Sprintf("%s-dbgsym", binary)},
195 R: ddebQuery,
196 }
197 }
198
199 binaryQuery = &OrQuery{
200 L: binaryQuery,
201 R: ddebQuery,
202 }
203
204 binaryQuery = &AndQuery{
205 L: &NotQuery{Q: &FieldQuery{Field: "$PackageType", Relation: VersionEqual, Value: ArchitectureSource}},
206 R: binaryQuery}
207 }
208
209 var nameQuery PackageQuery
210 if binaryQuery == nil {
211 nameQuery = sourceQuery
212 } else {
213 nameQuery = &OrQuery{L: sourceQuery, R: binaryQuery}
214 }
215
216 return &AndQuery{L: archQuery, R: nameQuery}
217}
218
219// GetField implements PackageLike interface
220func (c *Changes) GetField(field string) string {

Callers 2

TestPackageQueryMethod · 0.95
ImportChangesFilesFunction · 0.95

Calls

no outgoing calls

Tested by 1

TestPackageQueryMethod · 0.76