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(
String initialMessage,
Future<bool> Function() runner, {
String? successMessage,
int padRight = 0,
bool newParagraph = false,
}) async {
final message = initialMessage.endsWith('...')
? initialMessage
: '$initialMessage...';
return await progressStream(
message,
Stream.fromFuture(runner()),
toMessage: (r) => r ? successMessage ?? message : message,
padRight: padRight,
isSuccess: (result) => result,
newParagraph: newParagraph,
);
}