| 259 | |
| 260 | |
| 261 | class Results: |
| 262 | def __init__(self): |
| 263 | self.groups = SetupReportGroups() |
| 264 | self.units = {} |
| 265 | self.source_dependencies = {} |
| 266 | self.header_dependents = {} |
| 267 | |
| 268 | def track(self, filename): |
| 269 | is_tracked = False |
| 270 | for group in self.groups.values(): |
| 271 | if group.regexp.match(filename): |
| 272 | is_tracked = True |
| 273 | return is_tracked |
| 274 | |
| 275 | def recordFile(self, filename, targetname, loc, in_bytes, expanded, expanded_bytes): |
| 276 | unit = File(filename, targetname, loc, in_bytes, expanded, expanded_bytes) |
| 277 | self.units[filename] = unit |
| 278 | for group in self.groups.values(): |
| 279 | group.account(unit) |
| 280 | |
| 281 | def maxGroupWidth(self): |
| 282 | return MaxWidth([v.name for v in self.groups.values()]) |
| 283 | |
| 284 | def printGroupResults(self, file): |
| 285 | for key in sorted(self.groups.keys()): |
| 286 | print(self.groups[key].to_string(self.maxGroupWidth()), file=file) |
| 287 | |
| 288 | def printSorted(self, key, count, reverse, out): |
| 289 | for unit in sorted(list(self.units.values()), key=key, reverse=reverse)[:count]: |
| 290 | print(unit.to_string(), file=out) |
| 291 | |
| 292 | def addHeaderDeps(self, source_dependencies, header_dependents): |
| 293 | self.source_dependencies = source_dependencies |
| 294 | self.header_dependents = header_dependents |
| 295 | |
| 296 | |
| 297 | class LocsEncoder(json.JSONEncoder): |