UNPKG

@warriorjs/cli

Version:

WarriorJS command line

81 lines (63 loc) 2.35 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.README_TEMPLATE_FILE_PATH = exports.PLAYER_CODE_TEMPLATE_FILE_PATH = undefined; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _ejs = require('ejs'); var _ejs2 = _interopRequireDefault(_ejs); var _getFloorMap = require('./utils/getFloorMap'); var _getFloorMap2 = _interopRequireDefault(_getFloorMap); var _getFloorMapKey = require('./utils/getFloorMapKey'); var _getFloorMapKey2 = _interopRequireDefault(_getFloorMapKey); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const templatesPath = _path2.default.resolve(__dirname, '..', 'templates'); const PLAYER_CODE_TEMPLATE_FILE_PATH = exports.PLAYER_CODE_TEMPLATE_FILE_PATH = _path2.default.join(templatesPath, 'Player.js'); const README_TEMPLATE_FILE_PATH = exports.README_TEMPLATE_FILE_PATH = _path2.default.join(templatesPath, 'README.md.ejs'); /** Class representing a profile generator. */ class ProfileGenerator { /** * Creates a profile generator. * * @param {Profile} profile The profile. * @param {Object} level The level. */ constructor(profile, level) { this.profile = profile; this.level = level; } /** * Generates the profile files (README and, if first level, player code). */ generate() { this.generateReadmeFile(); if (this.profile.levelNumber === 1) { this.generatePlayerCodeFile(); } } /** * Generates the README file (README.md). */ generateReadmeFile() { const template = _fs2.default.readFileSync(README_TEMPLATE_FILE_PATH, 'utf8'); const data = { getFloorMap: _getFloorMap2.default, getFloorMapKey: _getFloorMapKey2.default, profile: this.profile, level: this.level }; const options = { filename: README_TEMPLATE_FILE_PATH }; const renderedReadme = _ejs2.default.render(template, data, options); _fs2.default.writeFileSync(this.profile.getReadmeFilePath(), renderedReadme); } /** * Generates the player code file (Player.js). */ generatePlayerCodeFile() { _fs2.default.copyFileSync(PLAYER_CODE_TEMPLATE_FILE_PATH, this.profile.getPlayerCodeFilePath()); } } exports.default = ProfileGenerator;