fromArgResults static method
Implementation
static ReplayHarnessConfig fromArgResults(ArgResults parsed) {
final trace = parsed['replay-trace'] as String?;
final scenario = parsed['replay-scenario'] as String?;
if (trace != null && scenario != null) {
return const ReplayHarnessConfig(
scenarioPath: null,
tracePath: null,
scriptFilter: '',
sessionOut: '',
scenarioOut: null,
scenarioName: 'replay',
scenarioDescription: 'Generated from trace',
speed: 1,
minSleepUs: 30000,
leadInMs: 3500,
screenWidth: 0,
screenHeight: 0,
fixedRightWidth: 0,
blockInput: false,
loop: false,
keepOpen: false,
timeoutSeconds: 180,
convertOnly: false,
captureTrace: false,
traceOut: '',
traceTags: '',
captureDispatch: false,
summaryCount: 0,
maxSpanUs: 0,
traceFromUs: null,
traceToUs: null,
traceIncludeHoverMoves: false,
error: 'Use only one: --replay-scenario or --replay-trace.',
);
}
final speed = _parseDouble(parsed['replay-speed'], '--replay-speed');
if (speed case (value: _, error: final err?)) {
return ReplayHarnessConfig._error(err);
}
final minSleep = _parseInt(
parsed['replay-trace-min-sleep-us'],
'--replay-trace-min-sleep-us',
);
final leadInMs = _parseOptionalInt(parsed['replay-lead-in-ms'], 3500);
final screenWidth = _parseInt(
parsed['replay-trace-screen-width'],
'--replay-trace-screen-width',
);
final screenHeight = _parseInt(
parsed['replay-trace-screen-height'],
'--replay-trace-screen-height',
);
final fixedRightWidth = _parseInt(
parsed['replay-trace-fixed-right-width'],
'--replay-trace-fixed-right-width',
);
final timeoutSeconds = _parseInt(
parsed['replay-timeout-seconds'],
'--replay-timeout-seconds',
);
final normalizedTrace = _blankToNull(trace);
final normalizedScenario = _blankToNull(scenario);
final scenarioOut = _blankToNull(parsed['replay-scenario-out'] as String?);
final scenarioName = parsed['replay-scenario-name'] as String?;
final scenarioDesc = parsed['replay-scenario-description'] as String?;
String resolveName(String? value) {
final trimmed = value?.trim();
return (trimmed == null || trimmed.isEmpty) ? 'replay' : trimmed;
}
String resolveDesc(String? value) {
final trimmed = value?.trim();
return (trimmed == null || trimmed.isEmpty)
? 'Generated from trace'
: trimmed;
}
final traceFromUs = _parseOptionalIntOrNull(parsed['replay-trace-from-us']);
final traceToUs = _parseOptionalIntOrNull(parsed['replay-trace-to-us']);
return ReplayHarnessConfig(
scenarioPath: normalizedScenario.isEmpty ? null : normalizedScenario,
tracePath: normalizedTrace.isEmpty ? null : normalizedTrace,
scriptFilter: (parsed['replay-script-filter'] as String?) ?? 'bin/*.dart',
sessionOut:
(parsed['replay-session-out'] as String?) ??
'.dart_tool/replay/session.log',
scenarioOut: scenarioOut.isEmpty ? null : scenarioOut,
scenarioName: resolveName(scenarioName),
scenarioDescription: resolveDesc(scenarioDesc),
speed: speed.value,
minSleepUs: minSleep.value,
leadInMs: leadInMs,
screenWidth: screenWidth.value,
screenHeight: screenHeight.value,
fixedRightWidth: fixedRightWidth.value,
blockInput: parsed['replay-block-input'] == true,
loop: parsed['replay-loop'] == true,
keepOpen: parsed['replay-keep-open'] == true,
timeoutSeconds: timeoutSeconds.value,
convertOnly: parsed['replay-convert-only'] == true,
captureTrace: parsed['replay-capture-trace'] != false,
traceOut:
(parsed['replay-trace-out'] as String?) ??
'.dart_tool/replay/trace.log',
traceTags:
(parsed['replay-trace-tags'] as String?) ??
'general,render,layout,paint,scroll',
captureDispatch: parsed['replay-capture-dispatch'] == true,
summaryCount:
int.tryParse((parsed['replay-summary-count'] as String?) ?? '12') ??
12,
maxSpanUs:
int.tryParse((parsed['replay-max-span-us'] as String?) ?? '0') ?? 0,
traceFromUs: traceFromUs,
traceToUs: traceToUs,
traceIncludeHoverMoves: parsed['replay-trace-include-hover'] == true,
error: null,
);
}