import { Spinner } from './spinner';

export async function runWithSpinner<T extends any[], R>(
  func: (...args: T) => R,
  args: T,
  message: string
) {
  const spinner = Spinner(message);
  try {
    const out: R = await func(...args);
    spinner.succeed();
    return out;
  } catch (exception) {
    spinner.fail();
    throw exception;
  }
}
