build method

Future<String?> build({
  1. required String buildCmd,
})

Build the flutter binaries for the platform given in buildCmd.

Implementation

Future<String?> build({required String buildCmd}) async {
  _logger.fine('Prepare artifact folder: $releaseFolder');
  await Directory(releaseFolder).create(recursive: true);

  var buildName =
      '${buildVersion.major}.${buildVersion.minor}.${buildVersion.patch}';
  if (buildVersion.preRelease.isNotEmpty) {
    buildName +=
        '-${buildVersion.preRelease.map((p) => p.toString()).join('.')}';
  }
  String? buildNumber;
  if (buildVersion.build.isNotEmpty) {
    buildNumber = buildVersion.build.map((p) => p.toString()).join('.');
  }
  final result = await runAsyncProcess(
    flutterSdkPath,
    [
      'build',
      buildCmd,
      '--build-name',
      buildName,
      if (buildNumber != null) ...[
        '--build-number',
        buildNumber,
      ],
      ...buildArgs,
      if (mainPath != null) ...[
        '-t',
        mainPath!,
      ],
      if (flavor != null) ...[
        '--flavor',
        flavor!,
      ],
    ],
    printCall: true,
    // Must run in shell to correctly resolve paths on Windows
    runInShell: true,
  );
  final filePath = parseFlutterBuildResult(result.stdout);
  _logger.info('Flutter output: $filePath');
  return filePath;
}