Files
ux/lib/builder.dart
2026-04-21 16:54:56 +03:00

36 lines
1.1 KiB
Dart

import 'dart:async';
import 'package:build/build.dart';
Builder appInfoBuilder(BuilderOptions options) => _AppInfoBuilder();
class _AppInfoBuilder implements Builder {
@override
Map<String, List<String>> get buildExtensions => const {
r'$package$': ['lib/app_info.g.dart'],
};
@override
Future<void> build(BuildStep buildStep) async {
final pkg = buildStep.inputId.package;
final raw = await buildStep.readAsString(AssetId(pkg, 'pubspec.yaml'));
final match =
RegExp(r'^version:\s*([^\s#]+)', multiLine: true).firstMatch(raw);
final combined = match?.group(1) ?? '0.0.0+0';
final plus = combined.indexOf('+');
final version = plus < 0 ? combined : combined.substring(0, plus);
final buildNumber =
plus < 0 ? 0 : int.tryParse(combined.substring(plus + 1)) ?? 0;
await buildStep.writeAsString(
AssetId(pkg, 'lib/app_info.g.dart'),
'''
// GENERATED by build_runner from pubspec.yaml — do not edit.
import 'package:ux/ux.dart';
const kAppInfo = AppInfo(version: '$version', buildNumber: $buildNumber);
''',
);
}
}