run method

  1. @override
Future<void> run({
  1. GlobalOptions? global,
  2. String? scriptName,
  3. bool noSelect = false,
  4. List<String> extraArgs = const [],
})
inherited

Implementation

@override
Future<void> run({
  GlobalOptions? global,
  String? scriptName,
  bool noSelect = false,
  List<String> extraArgs = const [],
}) async {
  if (config.scripts.keys.isEmpty) throw NoScriptException._();

  scriptName ??= await _pickScript(config);
  final script = config.scripts[scriptName];

  if (script == null) {
    throw ScriptNotFoundException._(
      scriptName,
      config.scripts.keys.toList(),
    );
  }

  final exitCode = await _runScript(
    script,
    config,
    global: global,
    noSelect: noSelect,
    extraArgs: extraArgs,
  );

  logger.newLine();
  logger.command('melos run ${script.name}');
  final resultLogger =
      logger.child(targetStyle(script.effectiveRun.replaceAll('\n', '')));

  if (exitCode != 0) {
    resultLogger.child(failedLabel);
    throw ScriptException._(script.name);
  }
  resultLogger.child(successLabel);
}