generatedHeaderStaleness function
Why a generated file is stale given its header, or null when current.
Headers carry nitro_generator: <version> and (since 0.7.4)
spec-sha256: <hash>; a file without the hash line predates the stamp
and must be regenerated once. generatorVersion null skips that check
(path dep — nothing to compare).
Implementation
String? generatedHeaderStaleness(String content, {required String specHash, String? generatorVersion}) {
final head = content.length > 512 ? content.substring(0, 512) : content;
final hash = RegExp(r'spec-sha256: ([0-9a-f]{64})').firstMatch(head)?.group(1);
if (hash == null) return 'no spec-sha256 stamp — generated by an older nitro_generator';
if (hash != specHash) return 'spec changed';
final version = RegExp(r'nitro_generator: (\S+)').firstMatch(head)?.group(1);
if (generatorVersion != null && version != generatorVersion) return 'generator $version → $generatorVersion';
return null;
}