run method

  1. @override
Future<void> run({
  1. required BuildInput input,
  2. required BuildOutputBuilder output,
  3. required Logger? logger,
})

Runs the Lua compilation process.

Scans the sources directories for .lua files, compiles them according to mode, and writes the output to build/<outputDirName>/.

Implementation

@override
Future<void> run({
  required BuildInput input,
  required BuildOutputBuilder output,
  required Logger? logger,
}) async {
  final packageRoot = input.packageRoot;

  // Write compiled output into build/<outputDirName>/ within the package.
  // This is the "write to build/" pattern used by flutter_scene and others
  // until dartDataAssets is enabled by default.
  final buildDir = packageRoot.resolve('build/$outputDirName/');

  for (final sourcePath in sources) {
    final sourceDir = packageRoot.resolve(sourcePath);

    if (!await Directory.fromUri(sourceDir).exists()) {
      logger?.fine('Source directory not found: $sourcePath');
      continue;
    }

    await _compileDirectory(
      packageName: input.packageName,
      sourceDir: sourceDir,
      buildDir: buildDir,
      sourcePath: sourcePath,
      input: input,
      output: output,
      logger: logger,
    );
  }
}