import {
  InvalidFilePleaseRunAppConfigureMessage,
  MissingFilePleaseRunAppConfigureMessage
} from '../components/app/app-check-component';
import { echo } from './echo';
import { logConfigFileErrorMessages } from './log-config-error-messages';
import logSymbols = require('log-symbols');
import { stringifyError } from './stringify-error';
import { logger } from './logger';

export async function checkConfigFileExistsAndValid(configFile) {
  let configExistsAndReadable = true;
  if (configFile.exists()) {
    try {
      configFile.read();
    } catch (error) {
      logger.error(stringifyError(error));
      configExistsAndReadable = false;
      const errorMessage = await logConfigFileErrorMessages(
        configFile,
        InvalidFilePleaseRunAppConfigureMessage
      );
      echo(`${logSymbols.error} ${errorMessage}`);
    }
  } else {
    await logConfigFileErrorMessages(
      configFile,
      MissingFilePleaseRunAppConfigureMessage
    );
    configExistsAndReadable = false;
  }
  return configExistsAndReadable;
}
