progress method

Future<bool> progress(
  1. String initialMessage,
  2. Future<bool> runner(), {
  3. String? successMessage,
  4. int padRight = 0,
  5. bool newParagraph = false,
})

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,
  );
}