build method

  1. @override
Future<String> build()
override

Build the artifact for macOS. It creates a .zip archive.

Implementation

@override
Future<String> build() async {
  var filePath = await flutterBuild.build(buildCmd: 'macos');
  if (filePath == null) {
    // The App's build file/folder name (*.app) is not equal to [appName], so must read the actual file name.
    // Must be read out after build!
    final appNameFile = File('./macos/Flutter/ephemeral/.app_filename');
    final dotAppName = (await appNameFile.readAsString()).trim();
    filePath = 'build/macos/Build/Products/Release/$dotAppName';
  }

  final cpuArchitecture = getCpuArchitecture();
  final artifactPath = flutterBuild.getArtifactPath(
      platform: 'macos', arch: cpuArchitecture, extension: 'zip');
  await runProcess(
    'ditto',
    [
      '-c',
      '-k',
      '--sequesterRsrc',
      '--keepParent',
      filePath,
      artifactPath,
    ],
  );

  return artifactPath;
}