progress method
Display a progress spinner and message on LogLevel.info while running
runner function.
And ellipsis ('...') is appended to initialMessage if it is not already
present.
Upon success, change the message to the successMessage if provided.
Uses the return value from runner to print success or failure status.
Returns the return value from runner.
Implementation
Future<bool> progress(
final String initialMessage,
final Future<bool> Function() runner, {
final String? successMessage,
final int padRight = 0,
final bool newParagraph = false,
}) async {
final message = initialMessage.endsWith('...')
? initialMessage
: '$initialMessage...';
return await progressStream(
message,
Stream.fromFuture(runner()),
toMessage: (final r) => r ? successMessage ?? message : message,
padRight: padRight,
isSuccess: (final result) => result,
newParagraph: newParagraph,
);
}