"use strict";

var _index = _interopRequireDefault(require("./index"));
var _path = _interopRequireDefault(require("path"));
var _fs = _interopRequireDefault(require("fs"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createFolder(folderName, folder, force) {
  if (force && _fs.default.existsSync(folder) === true) {
    _index.default.view.log('Deleting the ' + folderName + ' folder. (--force)');
    try {
      _fs.default.readdirSync(folder).forEach(filename => {
        _fs.default.unlinkSync(_path.default.resolve(folder, filename));
      });
    } catch (e) {
      _index.default.view.error(e);
    }
    try {
      _fs.default.rmdirSync(folder);
      _index.default.view.log('Successfully deleted the ' + folderName + ' folder.');
    } catch (e) {
      _index.default.view.error(e);
    }
  }
  try {
    if (_fs.default.existsSync(folder) === false) {
      _index.default.asset.mkdirp(folder);
      _index.default.view.log('Successfully created ' + folderName + ' folder at "' + folder + '".');
    } else {
      _index.default.view.log(folderName + ' folder at "' + folder + '" already exists.');
    }
  } catch (e) {
    _index.default.view.error(e);
  }
}
const init = {
  createMigrationsFolder: force => {
    createFolder('migrations', _index.default.path.getPath('migration'), force);
  },
  createSeedersFolder: force => {
    createFolder('seeders', _index.default.path.getPath('seeder'), force);
  },
  createModelsFolder: force => {
    createFolder('models', _index.default.path.getModelsPath(), force);
  },
  createModelsIndexFile: force => {
    const modelsPath = _index.default.path.getModelsPath();
    const indexPath = _path.default.resolve(modelsPath, _index.default.path.addFileExtension('index'));
    if (!_index.default.path.existsSync(modelsPath)) {
      _index.default.view.log('Models folder not available.');
    } else if (_index.default.path.existsSync(indexPath) && !force) {
      _index.default.view.notifyAboutExistingFile(indexPath);
    } else {
      const relativeConfigPath = _path.default.relative(_index.default.path.getModelsPath(), _index.default.config.getConfigFile());
      _index.default.asset.write(indexPath, _index.default.template.render('models/index.js', {
        configFile: "__dirname + '/" + relativeConfigPath.replace(/\\/g, '/') + "'"
      }, {
        beautify: false
      }));
    }
  }
};
module.exports = init;
module.exports.default = init;