run method
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 esc;
late final List<String> mimeexts;
try {
final args = globalResults?.arguments ?? [];
final config = configFromArgParse(ftRun.argParser, args);
final define = getDefine(config, globalResults);
final env = {...Platform.environment, ...define};
ftRun
..ftConfig = config
..ftDefine = define
..ftEnv = env
..ftPattern = getOpiton('pattern', config, gRes: globalResults)
..ftExcludes = getOpitons('excludes', config, gRes: globalResults)
..ftFields = getOpitons('fields', config,
gRes: globalResults, datalist: fieldNames)
..ftSizes = getSizes(config, globalResults)
..ftTimes = getTimes(config, globalResults)
..ftErrExit =
getFlag('errexit', config, defaultTo: true, gRes: globalResults)
..ftTimeType = getOpiton('time_type', ftRun.ftConfig,
gRes: globalResults,
defaultTo: timeTypeDefault,
datalist: timeTypes);
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);
mimeexts = getOpitons('$name.extmime', ftRun.ftConfig, aRes: argResults);
} 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,
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. extmime:$mimeexts')
..trace('i, escape:$esc, $escapeRegexp');
}
final mimeext = <String, String>{};
if (mimeexts.isNotEmpty) mimeext.addAll(parseAssigns(mimeexts));
// print(mimeext);
action.search(
esc ? escapeRegexp : regexp,
replace: replace,
extMime: mimeext,
lineByLine: linebyline,
reI: rei,
reU: reu,
reM: rem,
reS: res,
);
// end run
}