run method
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);
});
}