run method

  1. @override
void run()
override

Runs this command.

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

Implementation

@override
void run() {
  final ftRun = runner as FtRunner;
  final v = ftRun.ftVerbose;
  final logger = ftRun.ftLogger;

  late final String source;

  late final String regexp;
  late final String replace;
  late final bool rei;
  late final bool reu;
  late final bool res;
  late final bool rem;
  late final bool linebyline;
  late final bool onlygroups;
  late final bool linenum;
  late final bool esc;
  try {
    _setFtRunner(ftRun, globalResults);

    source = getSource(ftRun.ftConfig, globalResults,
        aRes: argResults, env: ftRun.ftEnv);

    regexp = getOpiton('$name.regexp', ftRun.ftConfig, aRes: argResults);
    replace = getOpiton('$name.replace', ftRun.ftConfig,
        aRes: argResults, isNotEmpty: false);
    rei = getFlag('$name.rei', ftRun.ftConfig, aRes: argResults);
    reu = getFlag('$name.reu', ftRun.ftConfig, aRes: argResults);
    res = getFlag('$name.res', ftRun.ftConfig, aRes: argResults);
    rem = getFlag('$name.rem', ftRun.ftConfig, aRes: argResults);

    esc = getFlag('$name.esc', ftRun.ftConfig, aRes: argResults);
    linebyline = getFlag('$name.linebyline', ftRun.ftConfig,
        aRes: argResults, defaultTo: true);
    onlygroups = getFlag('$name.onlygroups', ftRun.ftConfig,
        aRes: argResults, defaultTo: false);
    linenum = getFlag('$name.linenum', ftRun.ftConfig,
        aRes: argResults, defaultTo: true);
  } on UsageException catch (e, s) {
    logger.stderr('e, $name.run, $e\n $s');
    rethrow;
  } catch (e, s) {
    logger.stderr('e, $name.run, $e\n $s');
    throw UsageException(e.toString(), '');
  }

  if (v) _traceGlobalParam(logger, ftRun, source);
  final action = BasicPathAction(
    source,
    pattern: ftRun.ftPattern,
    excludes: ftRun.ftExcludes,
    mimeOverrides: ftRun.ftMimeOverrides,
    mimeIncludes: ftRun.ftMimeIncludes,
    mimeExcludes: ftRun.ftMimeExcludes,
    sizes: ftRun.ftSizes,
    times: ftRun.ftTimes,
    env: ftRun.ftEnv,
    verbose: ftRun.ftVerbose,
    cancelOnError: ftRun.ftErrExit,
    statTimeType: StatTimeType.values.byName(ftRun.ftTimeType),
  )
    ..logger = logger
    ..fmtFields = ftRun.ftFields;

  final err = action.validator();
  if (err.isNotEmpty) throw UsageException('err: chk, $err', '');
  action.argErr = err;

  final escapeRegexp = esc ? RegExp.escape(regexp) : '';
  if (v) {
    logger
      ..trace(
          'i, regexp:$regexp, replace:$replace, linebyline:$linebyline, rei:$rei,reu:$reu,rem:$rem,res:$res.')
      ..trace('i, escape:$esc, $escapeRegexp');
  }

  action.search(
    esc ? escapeRegexp : regexp,
    replace: replace,
    lineByLine: linebyline,
    onlyGroups: onlygroups,
    lineNum: linenum,
    reI: rei,
    reU: reu,
    reM: rem,
    reS: res,
  );

  // end run
}