getRulesDisabledByPackages function
Returns the set of rules that should be disabled based on disabled packages.
A rule is disabled if ALL packages it belongs to are disabled. If a rule appears in multiple package sets (e.g., a Provider rule about Equatable is in both sets), it stays enabled as long as at least one of its packages is enabled.
Rules not in any package set are never affected.
Implementation
Set<String> getRulesDisabledByPackages(Map<String, bool> packages) {
final disabledPackages = packages.entries
.where((e) => !e.value)
.map((e) => e.key)
.toSet();
if (disabledPackages.isEmpty) return const <String>{};
final enabledPackages = packages.entries
.where((e) => e.value)
.map((e) => e.key)
.toSet();
final Set<String> rulesToDisable = <String>{};
final sets = packageRuleSets;
for (final package in disabledPackages) {
final rules = sets[package] ?? const <String>{};
for (final rule in rules) {
// Check if this rule is still relevant via another enabled package
bool stillRelevant = false;
for (final enabledPackage in enabledPackages) {
if (sets[enabledPackage]?.contains(rule) ?? false) {
stillRelevant = true;
break;
}
}
if (!stillRelevant) {
rulesToDisable.add(rule);
}
}
}
return rulesToDisable;
}