publish method

  1. @override
Future<void> publish()
override

Implementation

@override
Future<void> publish() async {
  _logger.info('Build application...');
  final outputPath = await platformBuild.build();
  _logger.info('Build artifact path: $outputPath');
  final outputFile = File(outputPath);

  // Create tmp folder
  await runProcess('mkdir', ['-p', tmpFolder]);

  try {
    // Ensure files are at the correct path.
    await runProcess(
      'tar',
      [
        '-xzf',
        outputFile.absolute.path,
        '-C',
        tmpFolder,
      ],
    );

    await serverConnection.upload(
      // Must have a trailing slash to move folder contents only
      sourcePath: '$tmpFolder/web/',
      webServerPath: webServerPath,
      isDryRun: flutterPublish.isDryRun,
    );
  } catch (_) {
    rethrow;
  } finally {
    // Remove tmp folder
    await runProcess('rm', ['-r', tmpFolder]);
    await serverConnection.dispose();
  }
}