execute method

  1. @override
Future<ItemResult> execute(
  1. CommandContext context,
  2. CliArgs args
)
override

Execute command on a single folder.

Called by ToolRunner for each folder during traversal. Returns an ItemResult describing the outcome.

Implementation

@override
Future<ItemResult> execute(CommandContext context, CliArgs args) async {
  try {
    final dir = workingDirectory ?? context.path;
    final result = await Process.run(
      'sh',
      ['-c', shellCommand],
      workingDirectory: dir,
    );

    if (result.exitCode != 0) {
      return ItemResult.failure(
        path: context.path,
        name: context.name,
        error: result.stderr.toString(),
      );
    }

    return ItemResult.success(
      path: context.path,
      name: context.name,
      message: printOutput ? result.stdout.toString() : null,
    );
  } catch (e) {
    return ItemResult.failure(
      path: context.path,
      name: context.name,
      error: e.toString(),
    );
  }
}