make method

  1. @override
Future<MakeResult> make(
  1. Directory appDirectory, {
  2. required Directory outputDirectory,
  3. Map<String, dynamic>? makeArguments,
  4. void onProcessStdOut(
    1. List<int> data
    )?,
  5. void onProcessStdErr(
    1. List<int> data
    )?,
})

Implementation

@override
Future<MakeResult> make(
  Directory appDirectory, {
  required Directory outputDirectory,
  Map<String, dynamic>? makeArguments,
  void Function(List<int> data)? onProcessStdOut,
  void Function(List<int> data)? onProcessStdErr,
}) async {
  MakeConfig makeConfig = await loadMakeConfig(
    outputDirectory,
    makeArguments,
  );

  Directory packagingDirectory = makeConfig.packagingDirectory;

  Process.runSync('cp', [
    '-fr',
    'linux/packaging/deb/.',
    '${packagingDirectory.path}',
  ]);
  Process.runSync('mkdir', [
    '-p',
    '${packagingDirectory.path}/usr/lib/${makeConfig.appName}/',
  ]);
  Process.runSync('cp', [
    '-fr',
    '${appDirectory.path}/.',
    '${packagingDirectory.path}/usr/lib/${makeConfig.appName}/',
  ]);

  Process process = await Process.start('dpkg-deb', [
    '--build',
    '--root-owner-group',
    '${packagingDirectory.path}',
  ]);
  process.stdout.listen(onProcessStdOut);
  process.stderr.listen(onProcessStdErr);

  int exitCode = await process.exitCode;
  if (exitCode != 0) {
    throw MakeError();
  }

  packagingDirectory.deleteSync(recursive: true);
  return MakeResult(makeConfig);
}