UNPKG

phenomic

Version:

Modern website generator based on the React and Webpack ecosystem.

136 lines (98 loc) 4.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _path = require("path"); var _chalk = require("chalk"); var _chalk2 = _interopRequireDefault(_chalk); var _fsPromise = require("fs-promise"); var _fsPromise2 = _interopRequireDefault(_fsPromise); var _globby = require("globby"); var _globby2 = _interopRequireDefault(_globby); var _inquirer = require("inquirer"); var _package = require("../../../../package.json"); var _package2 = require("../../../../themes/phenomic-theme-base/package.json"); var _package3 = _interopRequireDefault(_package2); var _log = require("../../../_utils/log"); var _questions = require("./questions"); var _questions2 = _interopRequireDefault(_questions); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } 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"); }); }; } var themePath = (0, _path.join)(__dirname, "../../../../themes/phenomic-theme-base"); exports.default = function () { var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(argv) { var cwd, testMode, answers, name, homepage, twitter, repository, phenomic, devDependencies, pkg, files; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: cwd = process.cwd(); testMode = argv.test; (0, _log.plainLog)("Note: All values can be adjusted later."); _context.prev = 3; if (!testMode) { _context.next = 8; break; } _context.t0 = _questions.defaultTestAnswers; _context.next = 11; break; case 8: _context.next = 10; return (0, _inquirer.prompt)(_questions2.default); case 10: _context.t0 = _context.sent; case 11: answers = _context.t0; name = answers.name, homepage = answers.homepage, twitter = answers.twitter, repository = answers.repository, phenomic = _objectWithoutProperties(answers, ["name", "homepage", "twitter", "repository"]); devDependencies = _extends({}, _package3.default.devDependencies, !testMode && { phenomic: "^" + _package.version }); pkg = _extends({}, _package3.default, { name: name, homepage: homepage, phenomic: phenomic, twitter: twitter, repository: repository, devDependencies: devDependencies }); _context.next = 17; return _fsPromise2.default.writeJson((0, _path.join)(cwd, "package.json"), pkg); case 17: (0, _log.plainLog)("`package.json` generated"); files = _globby2.default.sync(["*", // node_modules is excluded because can be present during tests // (but will never be in public package) "!node_modules", // already generated "!package.json", // we assume it's up to the user "!yarn.lock"], { dot: true, cwd: themePath }); _context.next = 21; return Promise.all(files.map(function (file) { return _fsPromise2.default.copy((0, _path.join)(themePath, file), (0, _path.join)(cwd, file)); })); case 21: (0, _log.plainLog)("Base theme installed"); (0, _log.plainLog)("Project ready. Only one `npm install` and you are good to go!", "success"); _context.next = 29; break; case 25: _context.prev = 25; _context.t1 = _context["catch"](3); console.error(_chalk2.default.red(_context.t1)); process.exit(1); case 29: case "end": return _context.stop(); } } }, _callee, this, [[3, 25]]); })); function setup(_x) { return _ref.apply(this, arguments); } return setup; }();