build method

  1. @override
Future<void> build(
  1. BuildStep buildStep
)

Generates the outputs for a given BuildStep.

Implementation

@override
Future<void> build(BuildStep buildStep) async {
  final allConfigs = <String, bool>{};

  // 查找所有的.event_config.json文件
  final pattern = Glob('lib/**.tcmpp_event_config.json');

  await for (final input in buildStep.findAssets(pattern)) {
    try {
      final content = await buildStep.readAsString(input);
      final config = json.decode(content) as Map<String, dynamic>;

      // 合并配置
      config.forEach((key, value) {
        if (value is bool) {
          allConfigs[key] = value;
        }
      });

      log.info('[EventConfigAggregator] Merged config from ${input.path}: ${config.keys.join(", ")}');
    } catch (e) {
      log.warning('[EventConfigAggregator] Failed to read ${input.path}: $e');
    }
  }

  if (allConfigs.isNotEmpty) {
    // 生成统一的配置文件
    final outputId = AssetId(buildStep.inputId.package, 'lib/generated/tcmpp_event_config.json');
    final jsonOutput = const JsonEncoder.withIndent('  ').convert(allConfigs);

    await buildStep.writeAsString(outputId, jsonOutput);

    log.info('[EventConfigAggregator] Generated unified config with ${allConfigs.length} entries');
  } else {
    log.info('[EventConfigAggregator] No event configs found');
  }
}