tyr-cli
Version:
A command line interface for hammer-io.
136 lines (111 loc) • 9.83 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });exports.generateBasicNodeFiles = exports.generateNodeConfig = exports.generateTyrfile = undefined;
/**
* Generates the basic folder structure for the project
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generateProjectFolders = (() => {var _ref = _asyncToGenerator(
function* (projectPath) {
log.verbose('Project File Service - generateProjectFolders()');
if (!file.exists(`${projectPath}`)) {
file.createDirectory(`${projectPath}`);
file.createDirectory(`${projectPath}/src`);
log.info('Successfully created project folder structure');
} else {
throw new Error('Project already exists!');
}
});return function generateProjectFolders(_x) {return _ref.apply(this, arguments);};})();
/**
* Generates the basic index.js file.
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generateIndexFile = (() => {var _ref2 = _asyncToGenerator(
function* (projectPath) {
log.verbose('Project File Service - generateIndexFile()');
const path = `${projectPath}/src/index.js`;
const contents = file.loadTemplate('./../../templates/js/index.js');
file.writeFile(path, contents);
log.info(`Successfully generated file: ${path}`);
});return function generateIndexFile(_x2) {return _ref2.apply(this, arguments);};})();
/**
* Genrerates the basic project's package json. The output of this file will be used later if
* other tools need to be in the package json.
* @param configs the project configuration's object
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generatePackageJson = (() => {var _ref3 = _asyncToGenerator(
function* (configs, projectPath) {
log.verbose('Project File Service - generatePackageJson()');
const projectConfigs = configs.projectConfigurations;
const path = `${projectPath}/package.json`;
// load the contents from the template file
let contents = file.loadTemplate('./../../templates/js/package.json');
// turn the template contents into json
contents = JSON.parse(contents);
contents.name = projectConfigs.projectName;
contents.description = projectConfigs.description;
contents.license = projectConfigs.license;
contents.version = projectConfigs.version;
contents.authors = projectConfigs.author.split(',');
// turn the contents back to JSON
contents = jsonUtil.stringify(contents);
file.writeFile(path, contents);
log.info(`Successfully generated file: ${path}`);
});return function generatePackageJson(_x3, _x4) {return _ref3.apply(this, arguments);};})();
/**
* Generates the project README
* @param configs the configuration object
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generateReadMe = (() => {var _ref4 = _asyncToGenerator(
function* (configs, projectPath) {
log.verbose('Project Files Service - generateReadMe()');
const projectName = configs.projectConfigurations.projectName;
const description = configs.projectConfigurations.description;
const path = `${projectPath}/README.md`;
const contents = `# ${projectName}\n` +
`${description}\n\n` +
'## Installation' +
'\n' +
'`npm install`' +
'\n\n' +
'## Usage' +
'\n' +
'`npm start`' +
'\n\n' +
'Generated by [@hammer-io](https://github.com/hammer-io/tyr)';
file.writeFile(path, contents);
log.info(`Successfully generated file: ${path}`);
});return function generateReadMe(_x5, _x6) {return _ref4.apply(this, arguments);};})();
/**
* Generates a tyr file
* @param configs the configurations object
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generateTyrfile = exports.generateTyrfile = (() => {var _ref5 = _asyncToGenerator(
function* (configs, projectPath) {
log.verbose('Project Service - generateTyrfile()');
yield projectConfigurationService.writeToConfigFile(configs, projectPath);
log.info(`Successfully generated file: ${configs.projectConfigurations.projectName}/.tyrfile`);
});return function generateTyrfile(_x7, _x8) {return _ref5.apply(this, arguments);};})();let generateNodeConfig = exports.generateNodeConfig = (() => {var _ref6 = _asyncToGenerator(
function* (configs, projectPath) {
log.verbose('Project Service - generateNodeConfig');
const configPath = `${projectPath}/config`;
const emptyJsonObject = {};
file.createDirectory(`${configPath}`);
yield file.writeFile(`${configPath}/default.json`, jsonUtil.stringify(emptyJsonObject));
yield file.writeFile(`${configPath}/default-example.json`, jsonUtil.stringify(emptyJsonObject));
});return function generateNodeConfig(_x9, _x10) {return _ref6.apply(this, arguments);};})();
/**
* Genereates the basic file structure and files needed for a node project
* @param configs the configurations object
* @param projectPath the new project's file path
* @returns {Promise<void>}
*/let generateBasicNodeFiles = exports.generateBasicNodeFiles = (() => {var _ref7 = _asyncToGenerator(
function* (configs, projectPath) {
log.verbose('Project File Service - generateBasicNodeFiles()');
yield generateProjectFolders(projectPath);
yield generateIndexFile(projectPath);
yield generatePackageJson(configs, projectPath);
yield generateReadMe(configs, projectPath);
yield generateNodeConfig(configs, projectPath);
});return function generateBasicNodeFiles(_x11, _x12) {return _ref7.apply(this, arguments);};})();var _file = require('../utils/file');var file = _interopRequireWildcard(_file);var _winston = require('../utils/winston');var _projectConfigurationService = require('./project-configuration-service');var projectConfigurationService = _interopRequireWildcard(_projectConfigurationService);var _jsonUtil = require('../utils/json-util');var jsonUtil = _interopRequireWildcard(_jsonUtil);function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;} else {var newObj = {};if (obj != null) {for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];}}newObj.default = obj;return newObj;}}function _asyncToGenerator(fn) {return function () {var gen = fn.apply(this, arguments);return new Promise(function (resolve, reject) {function step(key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {return Promise.resolve(value).then(function (value) {step("next", value);}, function (err) {step("throw", err);});}}return step("next");});};} /* eslint-disable import/prefer-default-export,prefer-destructuring */const log = (0, _winston.getActiveLogger)();