run method

  1. @override
Future<bool> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<bool> run() async {
  final dirPath = targetDir;
  final ind = args['indent'] ?? inRs;
  final baseName = path.basename(dirPath);
  final distPath = path.join(dirPath, '.dist');
  final outputName = Utils.getIaCValue(dirPath, 'handler');
  final relOutPath = '.dist/$outputName';
  logger.printFixed('💪 Compiling $baseName → $outputName', ind);

  if (!Directory(distPath).existsSync()) Directory(distPath).createSync();
  final dartArgs = ['compile', 'exe', 'lib/main.dart', '-o', relOutPath];
  final pRes = Process.runSync('dart', dartArgs, workingDirectory: dirPath);

  return Utils.handleProcessResult(pRes, logger, '          ', (code) {
    final outputFile = File(relOutPath);
    final success = code == 0 && outputFile.existsSync();
    if (success) Utils.chmod('+x', relOutPath);
  });
}