diff --git a/firka/scripts/codegen.dart b/firka/scripts/codegen.dart index aa6bfea..4a51289 100644 --- a/firka/scripts/codegen.dart +++ b/firka/scripts/codegen.dart @@ -31,11 +31,11 @@ void main() async { ran = true; } - if (_isarOutOfDate(root)) { + if (_isarOutOfDate(root) || _isarGeneratedFilesMissing(root)) { final inputs = _isarInputs(root); final hashes = _computeHashes(root, inputs); stdout.writeln( - 'Isar generated dart files out of date, running build_runner...', + 'Isar generated dart files out of date or missing, running build_runner...', ); await _run('dart', ['run', 'build_runner', 'build'], root); _updateLockWithHashes(root, 'isar', hashes); @@ -240,6 +240,18 @@ bool _isarOutOfDate(String root) { return false; } +bool _isarGeneratedFilesMissing(String root) { + final inputs = _isarInputs(root); + if (inputs.isEmpty) return false; + final modelsDir = p.join(root, 'lib/data/models'); + for (final dartFile in inputs) { + final baseName = p.basenameWithoutExtension(dartFile.path); + final gFile = File(p.join(modelsDir, '$baseName.g.dart')); + if (!gFile.existsSync()) return true; + } + return false; +} + List _splashInputs(String root) { final config = File(p.join(root, 'flutter_native_splash.yaml')); final splashImage = File(p.join(root, 'assets/images/logos/splash.png')); diff --git a/firka_wear/scripts/codegen.dart b/firka_wear/scripts/codegen.dart index 6325632..aaa57db 100644 --- a/firka_wear/scripts/codegen.dart +++ b/firka_wear/scripts/codegen.dart @@ -30,11 +30,11 @@ void main() async { ran = true; } - if (_isarOutOfDate(root)) { + if (_isarOutOfDate(root) || _isarGeneratedFilesMissing(root)) { final inputs = _isarInputs(root); final hashes = _computeHashes(root, inputs); stdout.writeln( - 'Isar generated dart files out of date, running build_runner...', + 'Isar generated dart files out of date or missing, running build_runner...', ); await _run('dart', ['run', 'build_runner', 'build'], root); _updateLockWithHashes(root, 'isar', hashes); @@ -228,6 +228,18 @@ bool _isarOutOfDate(String root) { return false; } +bool _isarGeneratedFilesMissing(String root) { + final inputs = _isarInputs(root); + if (inputs.isEmpty) return false; + final modelsDir = p.join(root, 'lib/data/models'); + for (final dartFile in inputs) { + final baseName = p.basenameWithoutExtension(dartFile.path); + final gFile = File(p.join(modelsDir, '$baseName.g.dart')); + if (!gFile.existsSync()) return true; + } + return false; +} + Future _run( String executable, List args,