import ora from "ora";

export const withLoader = async <T>(
  message: string,
  fn: (updateMessage: (newMessage: string) => void) => Promise<T>
): Promise<T> => {
  const spinner = ora(message).start();
  const updateMessage = (newMessage: string) => {
    spinner.text = newMessage;
  };
  const logMessage = (log: string) => {
    console.log(log);
  };

  try {
    const result = await fn(updateMessage);
    spinner.succeed();
    return result;
  } catch (error) {
    spinner.fail();
    throw error;
  }
};
