@warriorjs/cli
Version:
WarriorJS command line
81 lines (63 loc) • 2.35 kB
JavaScript
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;
;