From 00fe59302e7f304acc86fb9814f048814a617634 Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Tue, 12 Jun 2018 22:43:50 -0400 Subject: [PATCH 01/10] main! --- build-index.js | 748 +++++++++++++++++++------------------ index-tests/git.spec.js | 7 +- index-tests/npm.spec.js | 7 +- index-tests/skip.spec.js | 7 +- index-tests/travis.spec.js | 7 +- index-tests/utils.js | 11 +- index-tests/yarn.spec.js | 4 +- index.js | 424 +++++++++++---------- main.js | 3 + package-lock.json | 2 +- package.json | 2 +- 11 files changed, 634 insertions(+), 588 deletions(-) create mode 100644 main.js diff --git a/build-index.js b/build-index.js index 6a3aa12..d74f017 100755 --- a/build-index.js +++ b/build-index.js @@ -1,6 +1,10 @@ #!/usr/bin/env node "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); + var _regenerator = require("babel-runtime/regenerator"); var _regenerator2 = _interopRequireDefault(_regenerator); @@ -74,419 +78,433 @@ var createFolder = function createFolder(folder) { return fs.mkdir(folder, callback); }, "Creating " + folder); }; -program.version(packageJson.version).arguments("").option("-y, --yarn", "Use yarn").option("-t, --travis", "Create .travis.yml file").option("-f, --force", "Removing your folder for good measure").option("-s, --skip", "Doesn't save to node_modules").option("-g, --git", "Does git init and creates .gitignore").action(function () { - var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(folder) { - var fixPackageJson = function () { - var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { - var pkgJson, dependencies, devDependencies, newPkg, mapDeps; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - mapDeps = function mapDeps(myDeps) { - var mattPkg = require("./package.json"); - var combined = (0, _extends4.default)({}, mattPkg.devDependencies, mattPkg.dependencies); - return myDeps.reduce(function (accum, d) { - return (0, _extends4.default)({}, accum, (0, _defineProperty3.default)({}, d, combined[d])); - }, {}); - }; - _context.t0 = JSON; - _context.next = 4; - return readFile(folder + "/package.json", false); - - case 4: - _context.t1 = _context.sent; - pkgJson = _context.t0.parse.call(_context.t0, _context.t1); - dependencies = deps.dependencies, devDependencies = deps.devDependencies; - newPkg = (0, _extends4.default)({}, pkgJson, { - dependencies: mapDeps(dependencies), - devDependencies: mapDeps(devDependencies), - eslintConfig: { - extends: ["mcrowder65"] - }, - bundlesize: [{ - "path": "./build/bundle.js", - "compression": "gzip", - "maxSize": "100 kB" - }], - scripts: (0, _extends4.default)({}, pkgJson.scripts, { - start: "export NODE_ENV=development && ./node_modules/.bin/webpack-dev-server", - test: "npm run linter && npm run jest", - jest: "./node_modules/.bin/jest --coverage", - linter: "./node_modules/.bin/eslint src --ext .js,.jsx && ./node_modules/.bin/eslint test --ext .js,.jsx", - webpack: "export NODE_ENV=production && ./node_modules/.bin/webpack -p --progress", - bundlesize: "bundlesize", - "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack" - }), - jest: (0, _extends4.default)({}, pkgJson.jest, { - setupTestFrameworkScriptFile: "/test/client/config.js", - moduleNameMapper: { - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/file-mock.js", - "\\.(css|scss|less)$": "identity-obj-proxy" - }, - collectCoverageFrom: ["src/client/**/*.{js*}", "!src/client/browser-history.js", "!src/client/app.js", "!src/client/router.js", "!src/client/actions/sagas/config.js", "!src/client/actions/sagas/index.js"], - modulePaths: ["src/client/"], - coverageReporters: ["html"] - }) - - }); - _context.next = 10; - return writeFile(folder + "/package.json", JSON.stringify(newPkg, null, 2)); - - case 10: - if (!(process.platform === "win32")) { - _context.next = 14; - break; - } - - displaySuccessMessage("Installation of node_modules will be skipped because windows is not supported for node_module installation on this cli."); - _context.next = 20; - break; +var cli = function cli() { + var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process.argv; - case 14: - if (!program.skip) { - _context.next = 18; - break; - } + console.log(args); + return new Promise(function (resolve, reject) { - displaySuccessMessage("Skipping installation of node_modules"); - _context.next = 20; - break; + program.version(packageJson.version).arguments("").option("-y, --yarn", "Use yarn").option("-t, --travis", "Create .travis.yml file").option("-f, --force", "Removing your folder for good measure").option("-s, --skip", "Doesn't save to node_modules").option("-g, --git", "Does git init and creates .gitignore").action(function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(folder) { + var fixPackageJson = function () { + var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { + var pkgJson, dependencies, devDependencies, newPkg, mapDeps; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + mapDeps = function mapDeps(myDeps) { + var mattPkg = require("./package.json"); + var combined = (0, _extends4.default)({}, mattPkg.devDependencies, mattPkg.dependencies); + return myDeps.reduce(function (accum, d) { + return (0, _extends4.default)({}, accum, (0, _defineProperty3.default)({}, d, combined[d])); + }, {}); + }; + + _context.t0 = JSON; + _context.next = 4; + return readFile(folder + "/package.json", false); + + case 4: + _context.t1 = _context.sent; + pkgJson = _context.t0.parse.call(_context.t0, _context.t1); + dependencies = deps.dependencies, devDependencies = deps.devDependencies; + newPkg = (0, _extends4.default)({}, pkgJson, { + dependencies: mapDeps(dependencies), + devDependencies: mapDeps(devDependencies), + eslintConfig: { + extends: ["mcrowder65"] + }, + bundlesize: [{ + "path": "./build/bundle.js", + "compression": "gzip", + "maxSize": "100 kB" + }], + scripts: (0, _extends4.default)({}, pkgJson.scripts, { + start: "export NODE_ENV=development && ./node_modules/.bin/webpack-dev-server", + test: "npm run linter && npm run jest", + jest: "./node_modules/.bin/jest --coverage", + linter: "./node_modules/.bin/eslint src --ext .js,.jsx && ./node_modules/.bin/eslint test --ext .js,.jsx", + webpack: "export NODE_ENV=production && ./node_modules/.bin/webpack -p --progress", + bundlesize: "bundlesize", + "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack" + }), + jest: (0, _extends4.default)({}, pkgJson.jest, { + setupTestFrameworkScriptFile: "/test/client/config.js", + moduleNameMapper: { + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/file-mock.js", + "\\.(css|scss|less)$": "identity-obj-proxy" + }, + collectCoverageFrom: ["src/client/**/*.{js*}", "!src/client/browser-history.js", "!src/client/app.js", "!src/client/router.js", "!src/client/actions/sagas/config.js", "!src/client/actions/sagas/index.js"], + modulePaths: ["src/client/"], + coverageReporters: ["html"] + }) - case 18: - _context.next = 20; - return execInFolder("" + install(), "Installing dependencies and devDependencies"); + }); + _context.next = 10; + return writeFile(folder + "/package.json", JSON.stringify(newPkg, null, 2)); - case 20: - case "end": - return _context.stop(); - } - } - }, _callee, this); - })); + case 10: + if (!(process.platform === "win32")) { + _context.next = 14; + break; + } - return function fixPackageJson() { - return _ref2.apply(this, arguments); - }; - }(); + displaySuccessMessage("Installation of node_modules will be skipped because windows is not supported for node_module installation on this cli."); + _context.next = 20; + break; - var gitInit = function () { - var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { - var gitIgnore; - return _regenerator2.default.wrap(function _callee2$(_context2) { - while (1) { - switch (_context2.prev = _context2.next) { - case 0: - if (!(process.platform === "win32")) { - _context2.next = 4; - break; - } + case 14: + if (!program.skip) { + _context.next = 18; + break; + } - displaySuccessMessage("git initialization not supported on windows by this cli"); - _context2.next = 10; - break; + displaySuccessMessage("Skipping installation of node_modules"); + _context.next = 20; + break; - case 4: - _context2.next = 6; - return execInFolder("git init", "git init"); + case 18: + _context.next = 20; + return execInFolder("" + install(), "Installing dependencies and devDependencies"); - case 6: - gitIgnore = "node_modules\ncoverage\nbuild\n.idea\nnpm-debug.log"; - _context2.next = 9; - return writeFile(folder + "/.gitignore", gitIgnore); + case 20: + case "end": + return _context.stop(); + } + } + }, _callee, this); + })); + + return function fixPackageJson() { + return _ref2.apply(this, arguments); + }; + }(); + + var gitInit = function () { + var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() { + var gitIgnore; + return _regenerator2.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + if (!(process.platform === "win32")) { + _context2.next = 4; + break; + } - case 9: - displaySuccessMessage(".gitignore created"); + displaySuccessMessage("git initialization not supported on windows by this cli"); + _context2.next = 10; + break; - case 10: - case "end": - return _context2.stop(); - } - } - }, _callee2, this); - })); + case 4: + _context2.next = 6; + return execInFolder("git init", "git init"); - return function gitInit() { - return _ref3.apply(this, arguments); - }; - }(); + case 6: + gitIgnore = "node_modules\ncoverage\nbuild\n.idea\nnpm-debug.log"; + _context2.next = 9; + return writeFile(folder + "/.gitignore", gitIgnore); - var scaffold = function () { - var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { - var files, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, f, file; + case 9: + displaySuccessMessage(".gitignore created"); - return _regenerator2.default.wrap(function _callee3$(_context3) { - while (1) { - switch (_context3.prev = _context3.next) { - case 0: - files = ["webpack.config.js", ".babelrc", "src/client/actions/sagas/config.js", "src/client/actions/sagas/index.js", "src/client/actions/sagas/ping-server.js", "src/client/actions/sagas/types.js", "src/client/actions/index.js", "src/client/actions/types.js", "src/client/components/home.js", "src/client/reducers/index.js", "src/client/reducers/initial-state.js", "src/client/styles/base.scss", "src/client/app.js", "src/client/browser-history.js", "src/client/index.html", "src/client/router.js", "test/client/__mocks__/file-mock.js", "test/client/actions/sagas/ping-server.spec.js", "test/client/actions/index.spec.js", "test/client/config.js", "test/client/reducers/index.spec.js"]; - _iteratorNormalCompletion = true; - _didIteratorError = false; - _iteratorError = undefined; - _context3.prev = 4; - _iterator = files[Symbol.iterator](); - - case 6: - if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { - _context3.next = 23; - break; + case 10: + case "end": + return _context2.stop(); } + } + }, _callee2, this); + })); + + return function gitInit() { + return _ref3.apply(this, arguments); + }; + }(); + + var scaffold = function () { + var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() { + var files, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, f, file; + + return _regenerator2.default.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + files = ["webpack.config.js", ".babelrc", "src/client/actions/sagas/config.js", "src/client/actions/sagas/index.js", "src/client/actions/sagas/ping-server.js", "src/client/actions/sagas/types.js", "src/client/actions/index.js", "src/client/actions/types.js", "src/client/components/home.js", "src/client/reducers/index.js", "src/client/reducers/initial-state.js", "src/client/styles/base.scss", "src/client/app.js", "src/client/browser-history.js", "src/client/index.html", "src/client/router.js", "test/client/__mocks__/file-mock.js", "test/client/actions/sagas/ping-server.spec.js", "test/client/actions/index.spec.js", "test/client/config.js", "test/client/reducers/index.spec.js"]; + _iteratorNormalCompletion = true; + _didIteratorError = false; + _iteratorError = undefined; + _context3.prev = 4; + _iterator = files[Symbol.iterator](); + + case 6: + if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { + _context3.next = 23; + break; + } - f = _step.value; - _context3.prev = 8; - _context3.next = 11; - return readFile("./" + f); - - case 11: - file = _context3.sent; - _context3.next = 14; - return writeFile(folder + "/" + f, file); + f = _step.value; + _context3.prev = 8; + _context3.next = 11; + return readFile("./" + f); + + case 11: + file = _context3.sent; + _context3.next = 14; + return writeFile(folder + "/" + f, file); + + case 14: + _context3.next = 20; + break; + + case 16: + _context3.prev = 16; + _context3.t0 = _context3["catch"](8); + + // eslint-disable-next-line no-console + console.log(_context3.t0); + throw _context3.t0; + + case 20: + _iteratorNormalCompletion = true; + _context3.next = 6; + break; + + case 23: + _context3.next = 29; + break; + + case 25: + _context3.prev = 25; + _context3.t1 = _context3["catch"](4); + _didIteratorError = true; + _iteratorError = _context3.t1; + + case 29: + _context3.prev = 29; + _context3.prev = 30; + + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } - case 14: - _context3.next = 20; - break; + case 32: + _context3.prev = 32; - case 16: - _context3.prev = 16; - _context3.t0 = _context3["catch"](8); + if (!_didIteratorError) { + _context3.next = 35; + break; + } - // eslint-disable-next-line no-console - console.log(_context3.t0); - throw _context3.t0; + throw _iteratorError; - case 20: - _iteratorNormalCompletion = true; - _context3.next = 6; - break; + case 35: + return _context3.finish(32); - case 23: - _context3.next = 29; - break; + case 36: + return _context3.finish(29); - case 25: - _context3.prev = 25; - _context3.t1 = _context3["catch"](4); - _didIteratorError = true; - _iteratorError = _context3.t1; + case 37: + displaySuccessMessage("Files scaffolded and placed"); - case 29: - _context3.prev = 29; - _context3.prev = 30; - - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); + case 38: + case "end": + return _context3.stop(); } - - case 32: - _context3.prev = 32; - - if (!_didIteratorError) { - _context3.next = 35; - break; + } + }, _callee3, this, [[4, 25, 29, 37], [8, 16], [30,, 32, 36]]); + })); + + return function scaffold() { + return _ref4.apply(this, arguments); + }; + }(); + + var createTravisFile = function () { + var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() { + var travisFile; + return _regenerator2.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + travisFile = "\nlanguage: node_js\nnode_js: 8.9.4\nscript:\n- npm test;\n- npm run webpack;\n- npm run bundlesize;"; + _context4.next = 3; + return writeFile(folder + "/.travis.yml", travisFile); + + case 3: + case "end": + return _context4.stop(); } + } + }, _callee4, this); + })); - throw _iteratorError; - - case 35: - return _context3.finish(32); - - case 36: - return _context3.finish(29); + return function createTravisFile() { + return _ref5.apply(this, arguments); + }; + }(); - case 37: - displaySuccessMessage("Files scaffolded and placed"); - - case 38: - case "end": - return _context3.stop(); - } - } - }, _callee3, this, [[4, 25, 29, 37], [8, 16], [30,, 32, 36]]); - })); - - return function scaffold() { - return _ref4.apply(this, arguments); - }; - }(); - - var createTravisFile = function () { - var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() { - var travisFile; - return _regenerator2.default.wrap(function _callee4$(_context4) { + var execInFolder, pkg, displaySuccessMessage, executeCmdInFolder, enterFolder, install, readFile, writeFile; + return _regenerator2.default.wrap(function _callee5$(_context5) { while (1) { - switch (_context4.prev = _context4.next) { + switch (_context5.prev = _context5.next) { case 0: - travisFile = "\nlanguage: node_js\nnode_js: 8.9.4\nscript:\n- npm test;\n- npm run webpack;\n- npm run bundlesize;"; - _context4.next = 3; - return writeFile(folder + "/.travis.yml", travisFile); - - case 3: - case "end": - return _context4.stop(); - } - } - }, _callee4, this); - })); - - return function createTravisFile() { - return _ref5.apply(this, arguments); - }; - }(); - - var execInFolder, pkg, displaySuccessMessage, executeCmdInFolder, enterFolder, install, readFile, writeFile; - return _regenerator2.default.wrap(function _callee5$(_context5) { - while (1) { - switch (_context5.prev = _context5.next) { - case 0: - writeFile = function writeFile(filename, content) { - return new Promise(function (resolve, reject) { - try { - var dirs = filename.split("/"); - if (dirs) { - dirs.forEach(function (d, i) { - var dir = makeDir(d, i); - if (!fs.existsSync(dir) && d.indexOf(".") === -1) { - fs.mkdirSync(dir); + writeFile = function writeFile(filename, content) { + return new Promise(function (resolve, reject) { + try { + var dirs = filename.split("/"); + if (dirs) { + dirs.forEach(function (d, i) { + var dir = makeDir(d, i); + if (!fs.existsSync(dir) && d.indexOf(".") === -1) { + fs.mkdirSync(dir); + } + function makeDir(currentDirectory, index) { + return dirs.filter(function (di, ind) { + return ind <= index; + }).join("/"); + } + }); } - function makeDir(currentDirectory, index) { - return dirs.filter(function (di, ind) { - return ind <= index; - }).join("/"); - } - }); - } - fs.writeFile(filename, content, function (error) { - if (error) { + fs.writeFile(filename, content, function (error) { + if (error) { + // eslint-disable-next-line no-console + console.log(error); + reject(error); + } else { + resolve(); + } + }); + } catch (error) { // eslint-disable-next-line no-console console.log(error); reject(error); - } else { - resolve(); } }); - } catch (error) { - // eslint-disable-next-line no-console - console.log(error); - reject(error); + }; + + readFile = function readFile(filename) { + var includeDirname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + return new Promise(function (resolve, reject) { + fs.readFile("" + (includeDirname ? __dirname + "/" : "") + filename, "UTF-8", function (err, data) { + try { + if (err) { + reject(err); + } else { + resolve(data); + } + } catch (error) { + reject(error); + } + }); + }); + }; + + install = function install() { + return program.yarn ? "yarn add" : "npm install"; + }; + + enterFolder = function enterFolder(str, post) { + return "cd " + folder + (post ? post : "") + " && " + str; + }; + + executeCmdInFolder = function executeCmdInFolder() { + return function (str, output) { + return executeBashCommand(enterFolder(str), output); + }; + }; + + displaySuccessMessage = function displaySuccessMessage(message) { + var spinner = ora(message).start(); + spinner.succeed(); + }; + + execInFolder = void 0; + _context5.prev = 7; + + if (!program.force) { + _context5.next = 11; + break; } - }); - }; - - readFile = function readFile(filename) { - var includeDirname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - - return new Promise(function (resolve, reject) { - fs.readFile("" + (includeDirname ? __dirname + "/" : "") + filename, "UTF-8", function (err, data) { - try { - if (err) { - reject(err); - } else { - resolve(data); - } - } catch (error) { - reject(error); - } - }); - }); - }; - - install = function install() { - return program.yarn ? "yarn add" : "npm install"; - }; - - enterFolder = function enterFolder(str, post) { - return "cd " + folder + (post ? post : "") + " && " + str; - }; - - executeCmdInFolder = function executeCmdInFolder() { - return function (str, output) { - return executeBashCommand(enterFolder(str), output); - }; - }; - - displaySuccessMessage = function displaySuccessMessage(message) { - var spinner = ora(message).start(); - spinner.succeed(); - }; - - execInFolder = void 0; - _context5.prev = 7; - - if (!program.force) { - _context5.next = 11; - break; - } - _context5.next = 11; - return removeFolder(folder); + _context5.next = 11; + return removeFolder(folder); - case 11: - pkg = program.yarn ? "yarn" : "npm"; + case 11: + pkg = program.yarn ? "yarn" : "npm"; - if (program.yarn) { - displaySuccessMessage("Using yarn to install"); - } - execInFolder = executeCmdInFolder(); - _context5.next = 16; - return createFolder(folder); - - case 16: - _context5.next = 18; - return execInFolder(pkg + " init " + folder + " -y", pkg + " init " + folder + " -y"); - - case 18: - if (!program.git) { - _context5.next = 21; - break; - } + if (program.yarn) { + displaySuccessMessage("Using yarn to install"); + } + execInFolder = executeCmdInFolder(); + _context5.next = 16; + return createFolder(folder); - _context5.next = 21; - return gitInit(); + case 16: + _context5.next = 18; + return execInFolder(pkg + " init " + folder + " -y", pkg + " init " + folder + " -y"); - case 21: - if (!program.travis) { - _context5.next = 25; - break; - } + case 18: + if (!program.git) { + _context5.next = 21; + break; + } + + _context5.next = 21; + return gitInit(); + + case 21: + if (!program.travis) { + _context5.next = 25; + break; + } + + displaySuccessMessage("Created .travis.yml"); + _context5.next = 25; + return createTravisFile(); + + case 25: + _context5.next = 27; + return scaffold(); - displaySuccessMessage("Created .travis.yml"); - _context5.next = 25; - return createTravisFile(); + case 27: + _context5.next = 29; + return fixPackageJson(); - case 25: - _context5.next = 27; - return scaffold(); + case 29: + resolve(); + _context5.next = 36; + break; - case 27: - _context5.next = 29; - return fixPackageJson(); + case 32: + _context5.prev = 32; + _context5.t0 = _context5["catch"](7); - case 29: - _context5.next = 34; - break; + if (!_context5.t0.message.indexOf("File exists")) { + // eslint-disable-next-line no-console + console.error("Something went wrong, sorry"); + } else if (_context5.t0.message.indexOf("File exists") !== -1) { + // eslint-disable-next-line no-console + console.error("You need to delete " + folder + ", or run again with -f"); + } - case 31: - _context5.prev = 31; - _context5.t0 = _context5["catch"](7); + reject(); - if (!_context5.t0.message.indexOf("File exists")) { - // eslint-disable-next-line no-console - console.error("Something went wrong, sorry"); - } else if (_context5.t0.message.indexOf("File exists") !== -1) { - // eslint-disable-next-line no-console - console.error("You need to delete " + folder + ", or run again with -f"); + case 36: + case "end": + return _context5.stop(); } + } + }, _callee5, undefined, [[7, 32]]); + })); - case 34: - case "end": - return _context5.stop(); - } - } - }, _callee5, undefined, [[7, 31]]); - })); + return function (_x2) { + return _ref.apply(this, arguments); + }; + }()).parse(args); + }); +}; - return function (_x) { - return _ref.apply(this, arguments); - }; -}()).parse(process.argv); +exports.default = cli; diff --git a/index-tests/git.spec.js b/index-tests/git.spec.js index 2589173..ed2bbfa 100644 --- a/index-tests/git.spec.js +++ b/index-tests/git.spec.js @@ -1,8 +1,11 @@ -import { executeBashFunction, doesFileExist } from "./utils"; +import { cli, doesFileExist } from "./utils"; test("When passing -g, .gitignore should be created", async () => { const folder = "git"; - await executeBashFunction(`node index.js ${folder} -s -g`); + process.argv.push(folder); + process.argv.push("-s"); + process.argv.push("-g"); + await cli(); const result = await doesFileExist(`${folder}/.gitignore`); expect(result).toBeTruthy(); }); \ No newline at end of file diff --git a/index-tests/npm.spec.js b/index-tests/npm.spec.js index 697881e..4be5417 100644 --- a/index-tests/npm.spec.js +++ b/index-tests/npm.spec.js @@ -1,11 +1,10 @@ -import { executeBashFunction, executeBuild, doesFileExist } from "./utils"; +import { cli, executeBuild, doesFileExist } from "./utils"; test("using npm", async () => { const folder = "npm"; - await executeBashFunction(`node index.js ${folder}`); + process.argv.push(folder); + await cli(); await executeBuild(folder); const doesPackageLockExist = await doesFileExist(`${folder}/package-lock.json`); expect(doesPackageLockExist).toBeTruthy(); }); - - diff --git a/index-tests/skip.spec.js b/index-tests/skip.spec.js index 13493ca..143434a 100644 --- a/index-tests/skip.spec.js +++ b/index-tests/skip.spec.js @@ -1,8 +1,11 @@ -import { executeBashFunction, doesFileExist } from "./utils"; +import { doesFileExist, cli } from "./utils"; test("When passing -s, node_modules shouldn't be installed", async () => { const folder = "skip"; - await executeBashFunction(`node index.js ${folder} -s`); + process.argv.push(folder); + process.argv.push("-s"); + await cli(); + expect(await doesFileExist(folder)).toBeTruthy(); const result = await doesFileExist(`${folder}/node_modules`); expect(result).not.toBeTruthy(); }); diff --git a/index-tests/travis.spec.js b/index-tests/travis.spec.js index abdbaf0..9ee53cf 100644 --- a/index-tests/travis.spec.js +++ b/index-tests/travis.spec.js @@ -1,8 +1,11 @@ -import { executeBashFunction, doesFileExist } from "./utils"; +import { cli, doesFileExist } from "./utils"; test("When passing -t, .travis.yml should be created", async () => { const folder = "travis"; - await executeBashFunction(`node index.js ${folder} -s -t`); + process.argv.push(folder); + process.argv.push("-s"); + process.argv.push("-t"); + await cli(); const result = await doesFileExist(`${folder}/.travis.yml`); expect(result).toBeTruthy(); }); \ No newline at end of file diff --git a/index-tests/utils.js b/index-tests/utils.js index 8a2550e..17052f8 100644 --- a/index-tests/utils.js +++ b/index-tests/utils.js @@ -1,5 +1,9 @@ -const { exec } = require("child_process"); -const fs = require("fs-extra"); + +import { exec } from "child_process"; +import fs from "fs-extra"; + +import reactCli from "../index"; + const executeFunction = func => { return new Promise((resolve, reject) => { @@ -29,5 +33,6 @@ export const doesFileExist = async path => { } catch (error) { return false; } +}; -}; \ No newline at end of file +export const cli = () => reactCli(); \ No newline at end of file diff --git a/index-tests/yarn.spec.js b/index-tests/yarn.spec.js index b6c89c3..a300876 100644 --- a/index-tests/yarn.spec.js +++ b/index-tests/yarn.spec.js @@ -2,7 +2,7 @@ import { executeBashFunction, executeBuild, doesFileExist } from "./utils"; test.skip("when passing -y, yarn should be used.", async () => { const folder = "yarn"; - await executeBashFunction(`node index.js ${folder} -y`); + await executeBashFunction(`node main.js ${folder} -y`); await executeBuild(folder); const doesYarnLockExist = await doesFileExist(`${folder}/yarn.lock`); expect(doesYarnLockExist).toBeTruthy(); @@ -10,7 +10,7 @@ test.skip("when passing -y, yarn should be used.", async () => { test.skip("When skipping installation, node_modules should not be there", async () => { const folder = "yarn-skip"; - await executeBashFunction(`node index.js ${folder} -y -s`); + await executeBashFunction(`node main.js ${folder} -y -s`); const doesNodeModulesExist = await doesFileExist(`${folder}/node_modules`); expect(doesNodeModulesExist).toBeTruthy(); }); diff --git a/index.js b/index.js index 04ec498..0ab5689 100644 --- a/index.js +++ b/index.js @@ -89,237 +89,249 @@ const executeBashCommand = (command, loadingText) => { const createFolder = folder => { return executeFunction(callback => fs.mkdir(folder, callback), `Creating ${folder}`); }; -program - .version(packageJson.version) - .arguments("") - .option("-y, --yarn", "Use yarn") - .option("-t, --travis", "Create .travis.yml file") - .option("-f, --force", "Removing your folder for good measure") - .option("-s, --skip", "Doesn't save to node_modules") - .option("-g, --git", "Does git init and creates .gitignore") - .action(async folder => { - let execInFolder; - try { - if (program.force) { - await removeFolder(folder); - } - const pkg = program.yarn ? "yarn" : "npm"; - if (program.yarn) { - displaySuccessMessage("Using yarn to install"); - } - execInFolder = executeCmdInFolder(); - await createFolder(folder); - await execInFolder(`${pkg} init ${folder} -y`, `${pkg} init ${folder} -y`); - if (program.git) { - await gitInit(); - } - if (program.travis) { - displaySuccessMessage("Created .travis.yml"); - await createTravisFile(); - } - await scaffold(); - await fixPackageJson(); - } catch (error) { - if (!error.message.indexOf("File exists")) { - // eslint-disable-next-line no-console - console.error("Something went wrong, sorry"); - } else if (error.message.indexOf("File exists") !== -1) { - // eslint-disable-next-line no-console - console.error(`You need to delete ${folder}, or run again with -f`); - } - } - async function fixPackageJson() { - const pkgJson = JSON.parse(await readFile(`${folder}/package.json`, false)); - const { dependencies, devDependencies } = deps; - const newPkg = { - ...pkgJson, - dependencies: mapDeps(dependencies), - devDependencies: mapDeps(devDependencies), - eslintConfig: { - extends: ["mcrowder65"] - }, - bundlesize: [ - { - "path": "./build/bundle.js", - "compression": "gzip", - "maxSize": "100 kB" + +const cli = () => { + return new Promise((outerResolve, outerReject) => { + + program + .version(packageJson.version) + .arguments("") + .option("-y, --yarn", "Use yarn") + .option("-t, --travis", "Create .travis.yml file") + .option("-f, --force", "Removing your folder for good measure") + .option("-s, --skip", "Doesn't save to node_modules") + .option("-g, --git", "Does git init and creates .gitignore") + .action(async folder => { + let execInFolder; + try { + if (program.force) { + await removeFolder(folder); + } + const pkg = program.yarn ? "yarn" : "npm"; + if (program.yarn) { + displaySuccessMessage("Using yarn to install"); + } + execInFolder = executeCmdInFolder(); + await createFolder(folder); + await execInFolder(`${pkg} init ${folder} -y`, `${pkg} init ${folder} -y`); + if (program.git) { + await gitInit(); + } + if (program.travis) { + displaySuccessMessage("Created .travis.yml"); + await createTravisFile(); + } + await scaffold(); + await fixPackageJson(); + outerResolve(); + } catch (error) { + if (!error.message.indexOf("File exists")) { + // eslint-disable-next-line no-console + console.error("Something went wrong, sorry"); + } else if (error.message.indexOf("File exists") !== -1) { + // eslint-disable-next-line no-console + console.error(`You need to delete ${folder}, or run again with -f`); } - ], - scripts: { - ...pkgJson.scripts, - start: "export NODE_ENV=development && ./node_modules/.bin/webpack-dev-server", - test: "npm run linter && npm run jest", - jest: "./node_modules/.bin/jest --coverage", - linter: "./node_modules/.bin/eslint src --ext .js,.jsx && ./node_modules/.bin/eslint test --ext .js,.jsx", - webpack: "export NODE_ENV=production && ./node_modules/.bin/webpack -p --progress", - bundlesize: "bundlesize", - "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack" - }, - jest: { - ...pkgJson.jest, - setupTestFrameworkScriptFile: "/test/client/config.js", - moduleNameMapper: { - "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/file-mock.js", - "\\.(css|scss|less)$": "identity-obj-proxy" - }, - collectCoverageFrom: [ - "src/client/**/*.{js*}", - "!src/client/browser-history.js", - "!src/client/app.js", - "!src/client/router.js", - "!src/client/actions/sagas/config.js", - "!src/client/actions/sagas/index.js" - ], - modulePaths: ["src/client/"], - coverageReporters: ["html"] + outerReject(); } + async function fixPackageJson() { + const pkgJson = JSON.parse(await readFile(`${folder}/package.json`, false)); + const { dependencies, devDependencies } = deps; + + const newPkg = { + ...pkgJson, + dependencies: mapDeps(dependencies), + devDependencies: mapDeps(devDependencies), + eslintConfig: { + extends: ["mcrowder65"] + }, + bundlesize: [ + { + "path": "./build/bundle.js", + "compression": "gzip", + "maxSize": "100 kB" + } + ], + scripts: { + ...pkgJson.scripts, + start: "export NODE_ENV=development && ./node_modules/.bin/webpack-dev-server", + test: "npm run linter && npm run jest", + jest: "./node_modules/.bin/jest --coverage", + linter: "./node_modules/.bin/eslint src --ext .js,.jsx && ./node_modules/.bin/eslint test --ext .js,.jsx", + webpack: "export NODE_ENV=production && ./node_modules/.bin/webpack -p --progress", + bundlesize: "bundlesize", + "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack" + }, + jest: { + ...pkgJson.jest, + setupTestFrameworkScriptFile: "/test/client/config.js", + moduleNameMapper: { + "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/__mocks__/file-mock.js", + "\\.(css|scss|less)$": "identity-obj-proxy" + }, + collectCoverageFrom: [ + "src/client/**/*.{js*}", + "!src/client/browser-history.js", + "!src/client/app.js", + "!src/client/router.js", + "!src/client/actions/sagas/config.js", + "!src/client/actions/sagas/index.js" + ], + modulePaths: ["src/client/"], + coverageReporters: ["html"] + } - }; - await writeFile(`${folder}/package.json`, JSON.stringify(newPkg, null, 2)); - if (process.platform === "win32") { - displaySuccessMessage("Installation of node_modules will be skipped because windows is not supported for node_module installation on this cli."); - } else if (program.skip) { - displaySuccessMessage("Skipping installation of node_modules"); - } else { - await execInFolder(`${install()}`, "Installing dependencies and devDependencies"); - } - function mapDeps(myDeps) { - const mattPkg = require("./package.json"); - const combined = { - ...mattPkg.devDependencies, - ...mattPkg.dependencies - }; - return myDeps.reduce((accum, d) => { - return { - ...accum, - [d]: combined[d] }; - }, {}); - } - } - async function gitInit() { - if (process.platform === "win32") { - displaySuccessMessage("git initialization not supported on windows by this cli"); - } else { - await execInFolder(`git init`, `git init`); - const gitIgnore = `node_modules + await writeFile(`${folder}/package.json`, JSON.stringify(newPkg, null, 2)); + if (process.platform === "win32") { + displaySuccessMessage("Installation of node_modules will be skipped because windows is not supported for node_module installation on this cli."); + } else if (program.skip) { + displaySuccessMessage("Skipping installation of node_modules"); + } else { + await execInFolder(`${install()}`, "Installing dependencies and devDependencies"); + } + function mapDeps(myDeps) { + const mattPkg = require("./package.json"); + const combined = { + ...mattPkg.devDependencies, + ...mattPkg.dependencies + }; + return myDeps.reduce((accum, d) => { + return { + ...accum, + [d]: combined[d] + }; + }, {}); + } + } + async function gitInit() { + if (process.platform === "win32") { + displaySuccessMessage("git initialization not supported on windows by this cli"); + } else { + await execInFolder(`git init`, `git init`); + const gitIgnore = `node_modules coverage build .idea npm-debug.log`; - await writeFile(`${folder}/.gitignore`, gitIgnore); - displaySuccessMessage(`.gitignore created`); - } - } - async function scaffold() { - const files = [ - "webpack.config.js", - ".babelrc", - "src/client/actions/sagas/config.js", - "src/client/actions/sagas/index.js", - "src/client/actions/sagas/ping-server.js", - "src/client/actions/sagas/types.js", - "src/client/actions/index.js", - "src/client/actions/types.js", - "src/client/components/home.js", - "src/client/reducers/index.js", - "src/client/reducers/initial-state.js", - "src/client/styles/base.scss", - "src/client/app.js", - "src/client/browser-history.js", - "src/client/index.html", - "src/client/router.js", - "test/client/__mocks__/file-mock.js", - "test/client/actions/sagas/ping-server.spec.js", - "test/client/actions/index.spec.js", - "test/client/config.js", - "test/client/reducers/index.spec.js" - ]; - for (const f of files) { - try { - const file = await readFile(`./${f}`); - await writeFile(`${folder}/${f}`, file); - } catch (e) { - // eslint-disable-next-line no-console - console.log(e); - throw e; + await writeFile(`${folder}/.gitignore`, gitIgnore); + displaySuccessMessage(`.gitignore created`); + } } - } - displaySuccessMessage("Files scaffolded and placed"); + async function scaffold() { + const files = [ + "webpack.config.js", + ".babelrc", + "src/client/actions/sagas/config.js", + "src/client/actions/sagas/index.js", + "src/client/actions/sagas/ping-server.js", + "src/client/actions/sagas/types.js", + "src/client/actions/index.js", + "src/client/actions/types.js", + "src/client/components/home.js", + "src/client/reducers/index.js", + "src/client/reducers/initial-state.js", + "src/client/styles/base.scss", + "src/client/app.js", + "src/client/browser-history.js", + "src/client/index.html", + "src/client/router.js", + "test/client/__mocks__/file-mock.js", + "test/client/actions/sagas/ping-server.spec.js", + "test/client/actions/index.spec.js", + "test/client/config.js", + "test/client/reducers/index.spec.js" + ]; + for (const f of files) { + try { + const file = await readFile(`./${f}`); + await writeFile(`${folder}/${f}`, file); + } catch (e) { + // eslint-disable-next-line no-console + console.log(e); + throw e; + } + } + displaySuccessMessage("Files scaffolded and placed"); - } + } - async function createTravisFile() { - const travisFile = ` + async function createTravisFile() { + const travisFile = ` language: node_js node_js: 8.9.4 script: - npm test; - npm run webpack; - npm run bundlesize;`; - await writeFile(`${folder}/.travis.yml`, travisFile); - } - function displaySuccessMessage(message) { - const spinner = ora(message).start(); - spinner.succeed(); - } + await writeFile(`${folder}/.travis.yml`, travisFile); + } + function displaySuccessMessage(message) { + const spinner = ora(message).start(); + spinner.succeed(); + } - function executeCmdInFolder() { - return (str, output) => executeBashCommand(enterFolder(str), output); - } - function enterFolder(str, post) { - return `cd ${folder}${post ? post : ""} && ${str}`; - } - function install() { - return program.yarn ? "yarn add" : "npm install"; - } - function readFile(filename, includeDirname = true) { - return new Promise((resolve, reject) => { - fs.readFile(`${includeDirname ? `${__dirname}/` : ""}${filename}`, "UTF-8", (err, data) => { - try { - if (err) { - reject(err); - } else { - resolve(data); - } + function executeCmdInFolder() { + return (str, output) => executeBashCommand(enterFolder(str), output); + } + function enterFolder(str, post) { + return `cd ${folder}${post ? post : ""} && ${str}`; + } + function install() { + return program.yarn ? "yarn add" : "npm install"; + } + function readFile(filename, includeDirname = true) { + return new Promise((resolve, reject) => { + fs.readFile(`${includeDirname ? `${__dirname}/` : ""}${filename}`, "UTF-8", (err, data) => { + try { + if (err) { + reject(err); + } else { + resolve(data); + } - } catch (error) { - reject(error); - } - }); - }); - } - function writeFile(filename, content) { - return new Promise((resolve, reject) => { - try { - const dirs = filename.split("/"); - if (dirs) { - dirs.forEach((d, i) => { - const dir = makeDir(d, i); - if (!fs.existsSync(dir) && d.indexOf(".") === -1) { - fs.mkdirSync(dir); - } - function makeDir(currentDirectory, index) { - return dirs.filter((di, ind) => ind <= index).join("/"); + } catch (error) { + reject(error); } }); - } - fs.writeFile(filename, content, error => { - if (error) { + }); + } + function writeFile(filename, content) { + return new Promise((resolve, reject) => { + try { + const dirs = filename.split("/"); + if (dirs) { + dirs.forEach((d, i) => { + const dir = makeDir(d, i); + if (!fs.existsSync(dir) && d.indexOf(".") === -1) { + fs.mkdirSync(dir); + } + function makeDir(currentDirectory, index) { + return dirs.filter((di, ind) => ind <= index).join("/"); + } + }); + } + fs.writeFile(filename, content, error => { + if (error) { + // eslint-disable-next-line no-console + console.log(error); + reject(error); + } else { + resolve(); + } + }); + } catch (error) { // eslint-disable-next-line no-console console.log(error); reject(error); - } else { - resolve(); } }); - } catch (error) { - // eslint-disable-next-line no-console - console.log(error); - reject(error); } - }); - } - }) - .parse(process.argv); \ No newline at end of file + }) + .parse(process.argv); + }); + +}; + +export default cli; \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..a802b43 --- /dev/null +++ b/main.js @@ -0,0 +1,3 @@ +const func = require("./build-index.js").default; + +func(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f50868a..8a3695b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "create-react-matt", - "version": "0.0.80", + "version": "0.0.81", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index b47eaaa..d2268a2 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "url": "git+https://github.com/mcrowder65/create-react-matt.git" }, "bin": { - "create-react-matt": "./build-index.js" + "create-react-matt": "./main.js" }, "scripts": { "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack", From 5f1c17c0c8b864ad30ddd61efa6ec6a07c8b98cf Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Tue, 12 Jun 2018 22:43:56 -0400 Subject: [PATCH 02/10] woops forgot to build --- build-index.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/build-index.js b/build-index.js index d74f017..a34ae50 100755 --- a/build-index.js +++ b/build-index.js @@ -80,10 +80,7 @@ var createFolder = function createFolder(folder) { }; var cli = function cli() { - var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process.argv; - - console.log(args); - return new Promise(function (resolve, reject) { + return new Promise(function (outerResolve, outerReject) { program.version(packageJson.version).arguments("").option("-y, --yarn", "Use yarn").option("-t, --travis", "Create .travis.yml file").option("-f, --force", "Removing your folder for good measure").option("-s, --skip", "Doesn't save to node_modules").option("-g, --git", "Does git init and creates .gitignore").action(function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(folder) { @@ -474,7 +471,7 @@ var cli = function cli() { return fixPackageJson(); case 29: - resolve(); + outerResolve(); _context5.next = 36; break; @@ -489,8 +486,7 @@ var cli = function cli() { // eslint-disable-next-line no-console console.error("You need to delete " + folder + ", or run again with -f"); } - - reject(); + outerReject(); case 36: case "end": @@ -500,10 +496,10 @@ var cli = function cli() { }, _callee5, undefined, [[7, 32]]); })); - return function (_x2) { + return function (_x) { return _ref.apply(this, arguments); }; - }()).parse(args); + }()).parse(process.argv); }); }; From 2c75455402557a0a4f146fce4649462719b525af Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Tue, 12 Jun 2018 22:46:08 -0400 Subject: [PATCH 03/10] silent! --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d2268a2..9715c07 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "build": "babel index.js --out-file build-index.js", "test": "npm run linter && npm run jest", "pre-jest": "rm -rf yarn-skip && rm -rf yarn && rm -rf npm && rm -rf travis && rm -rf skip && rm -rf git", - "jest": "npm run pre-jest && jest --coverage && npm run pre-jest", + "jest": "npm run pre-jest && jest --coverage --silent && npm run pre-jest", "bundlesize": "bundlesize", "coveralls": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls", "prepublishOnly": "npm run build" From be028faeb6383568fdf3b42cb52e024d15e5dedd Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 10:09:10 -0400 Subject: [PATCH 04/10] more tests --- .gitignore | 5 +++- build-index.js | 4 ++-- index-tests/force.spec.js | 23 ++++++++++++++++++ index.js | 10 ++++---- main-index.js | 50 +++++++++++++++++++++++++++++++++++++++ main.js | 12 +++++++++- package.json | 10 ++++---- 7 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 index-tests/force.spec.js create mode 100644 main-index.js diff --git a/.gitignore b/.gitignore index fefdd1f..37abf56 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,7 @@ yarn skip npm travis -yarn-skip \ No newline at end of file +yarn-skip +force +forcef +force-f \ No newline at end of file diff --git a/build-index.js b/build-index.js index a34ae50..9ebfd0b 100755 --- a/build-index.js +++ b/build-index.js @@ -482,11 +482,11 @@ var cli = function cli() { if (!_context5.t0.message.indexOf("File exists")) { // eslint-disable-next-line no-console console.error("Something went wrong, sorry"); - } else if (_context5.t0.message.indexOf("File exists") !== -1) { + } else if (_context5.t0.message.indexOf("file already exists") !== -1) { // eslint-disable-next-line no-console console.error("You need to delete " + folder + ", or run again with -f"); } - outerReject(); + outerReject(_context5.t0); case 36: case "end": diff --git a/index-tests/force.spec.js b/index-tests/force.spec.js new file mode 100644 index 0000000..94b074f --- /dev/null +++ b/index-tests/force.spec.js @@ -0,0 +1,23 @@ +import { executeBashFunction, cli, doesFileExist } from "./utils.js"; + +test("When force exists, it should reject", async () => { + try { + const folder = "force"; + await executeBashFunction(`mkdir ${folder}`); + process.argv.push(folder); + await cli(); + + } catch (e) { + expect(e.message.indexOf("file already exists")).toBeGreaterThan(-1); + } +}); + +test("When force exists and you pass -f, it should delete it and work!", async () => { + const folder = "forcef"; + await executeBashFunction(`mkdir ${folder}`); + process.argv.push(folder); + process.argv.push("-f"); + process.argv.push("-s"); + await cli(); + expect(await doesFileExist(folder)).toBeTruthy(); +}); \ No newline at end of file diff --git a/index.js b/index.js index 0ab5689..8703ae5 100644 --- a/index.js +++ b/index.js @@ -126,14 +126,14 @@ const cli = () => { await fixPackageJson(); outerResolve(); } catch (error) { - if (!error.message.indexOf("File exists")) { - // eslint-disable-next-line no-console - console.error("Something went wrong, sorry"); - } else if (error.message.indexOf("File exists") !== -1) { + if (error.message.indexOf("file already exists") !== -1) { // eslint-disable-next-line no-console console.error(`You need to delete ${folder}, or run again with -f`); + } else { + // eslint-disable-next-line no-console + console.error("Something went wrong, sorry"); } - outerReject(); + outerReject(error); } async function fixPackageJson() { const pkgJson = JSON.parse(await readFile(`${folder}/package.json`, false)); diff --git a/main-index.js b/main-index.js new file mode 100644 index 0000000..25e9ea0 --- /dev/null +++ b/main-index.js @@ -0,0 +1,50 @@ +"use strict"; + +var _regenerator = require("babel-runtime/regenerator"); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var func = require("./build-index.js").default; + +var exec = function () { + var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.prev = 0; + _context.next = 3; + return func(); + + case 3: + // eslint-disable-next-line no-console + console.log("Finished without errors"); + _context.next = 9; + break; + + case 6: + _context.prev = 6; + _context.t0 = _context["catch"](0); + + // eslint-disable-next-line no-console + console.log("Finished with errors"); + + case 9: + case "end": + return _context.stop(); + } + } + }, _callee, undefined, [[0, 6]]); + })); + + return function exec() { + return _ref.apply(this, arguments); + }; +}(); +exec(); diff --git a/main.js b/main.js index a802b43..0efefde 100644 --- a/main.js +++ b/main.js @@ -1,3 +1,13 @@ const func = require("./build-index.js").default; -func(); \ No newline at end of file +const exec = async () => { + try { + await func(); + // eslint-disable-next-line no-console + console.log("Finished without errors"); + } catch (e) { + // eslint-disable-next-line no-console + console.log("Finished with errors"); + } +}; +exec(); \ No newline at end of file diff --git a/package.json b/package.json index 9715c07..6771dd9 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,23 @@ { "name": "create-react-matt", - "version": "0.0.81", + "version": "0.0.82", "description": "React, Redux, Webpack, Babel, Jest, and code coverage all provided for you", - "main": "build-index.js", + "main": "main-index.js", "repository": { "type": "git", "url": "git+https://github.com/mcrowder65/create-react-matt.git" }, "bin": { - "create-react-matt": "./main.js" + "create-react-matt": "./main-index.js" }, "scripts": { "analyze-bundle": "export ANALYZE_BUNDLE=true && npm run webpack", "start": "export NODE_ENV=development && webpack-dev-server", "linter": "eslint index.js && eslint index-tests --ext .js && eslint src --ext .js,.jsx && eslint test --ext .js,.jsx", "webpack": "export NODE_ENV=production && webpack -p --progress", - "build": "babel index.js --out-file build-index.js", + "build": "babel index.js --out-file build-index.js && babel main.js --out-file main-index.js", "test": "npm run linter && npm run jest", - "pre-jest": "rm -rf yarn-skip && rm -rf yarn && rm -rf npm && rm -rf travis && rm -rf skip && rm -rf git", + "pre-jest": "rm -rf forcef && rm -rf force && rm -rf yarn-skip && rm -rf yarn && rm -rf npm && rm -rf travis && rm -rf skip && rm -rf git", "jest": "npm run pre-jest && jest --coverage --silent && npm run pre-jest", "bundlesize": "bundlesize", "coveralls": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls", From 920235a6cf9373fad256a6d1ea9ae93a5e41741b Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 10:09:15 -0400 Subject: [PATCH 05/10] oops --- build-index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build-index.js b/build-index.js index 9ebfd0b..c331bf5 100755 --- a/build-index.js +++ b/build-index.js @@ -479,12 +479,12 @@ var cli = function cli() { _context5.prev = 32; _context5.t0 = _context5["catch"](7); - if (!_context5.t0.message.indexOf("File exists")) { - // eslint-disable-next-line no-console - console.error("Something went wrong, sorry"); - } else if (_context5.t0.message.indexOf("file already exists") !== -1) { + if (_context5.t0.message.indexOf("file already exists") !== -1) { // eslint-disable-next-line no-console console.error("You need to delete " + folder + ", or run again with -f"); + } else { + // eslint-disable-next-line no-console + console.error("Something went wrong, sorry"); } outerReject(_context5.t0); From cf9ec14609edd6002dbfada284349f259d6fdb3b Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 10:11:07 -0400 Subject: [PATCH 06/10] forcef --- index-tests/force.spec.js | 11 ----------- index-tests/forcef.spec.js | 11 +++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 index-tests/forcef.spec.js diff --git a/index-tests/force.spec.js b/index-tests/force.spec.js index 94b074f..4ef5799 100644 --- a/index-tests/force.spec.js +++ b/index-tests/force.spec.js @@ -6,18 +6,7 @@ test("When force exists, it should reject", async () => { await executeBashFunction(`mkdir ${folder}`); process.argv.push(folder); await cli(); - } catch (e) { expect(e.message.indexOf("file already exists")).toBeGreaterThan(-1); } }); - -test("When force exists and you pass -f, it should delete it and work!", async () => { - const folder = "forcef"; - await executeBashFunction(`mkdir ${folder}`); - process.argv.push(folder); - process.argv.push("-f"); - process.argv.push("-s"); - await cli(); - expect(await doesFileExist(folder)).toBeTruthy(); -}); \ No newline at end of file diff --git a/index-tests/forcef.spec.js b/index-tests/forcef.spec.js new file mode 100644 index 0000000..58ceab2 --- /dev/null +++ b/index-tests/forcef.spec.js @@ -0,0 +1,11 @@ +import { executeBashFunction, cli, doesFileExist } from "./utils.js"; + +test("When forcef exists and you pass -f, it should delete it and work!", async () => { + const folder = "forcef"; + await executeBashFunction(`mkdir ${folder}`); + process.argv.push(folder); + process.argv.push("-f"); + process.argv.push("-s"); + await cli(); + expect(await doesFileExist(folder)).toBeTruthy(); +}); \ No newline at end of file From fbd639d65d24ecd11ed2471193c861120aeb9583 Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 10:12:59 -0400 Subject: [PATCH 07/10] oops my linter should pass now --- index-tests/force.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index-tests/force.spec.js b/index-tests/force.spec.js index 4ef5799..aa8889c 100644 --- a/index-tests/force.spec.js +++ b/index-tests/force.spec.js @@ -1,4 +1,4 @@ -import { executeBashFunction, cli, doesFileExist } from "./utils.js"; +import { executeBashFunction, cli } from "./utils.js"; test("When force exists, it should reject", async () => { try { From 747b1ec71a0dfebe6e30e73fecde912d7e60905c Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 17:45:41 -0400 Subject: [PATCH 08/10] maybe use import ? --- main-index.js | 8 +++++--- main.js | 2 +- package-lock.json | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/main-index.js b/main-index.js index 25e9ea0..271ade5 100644 --- a/main-index.js +++ b/main-index.js @@ -8,9 +8,11 @@ var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator"); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _buildIndex = require("./build-index.js"); + +var _buildIndex2 = _interopRequireDefault(_buildIndex); -var func = require("./build-index.js").default; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var exec = function () { var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() { @@ -20,7 +22,7 @@ var exec = function () { case 0: _context.prev = 0; _context.next = 3; - return func(); + return (0, _buildIndex2.default)(); case 3: // eslint-disable-next-line no-console diff --git a/main.js b/main.js index 0efefde..bbc8805 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,4 @@ -const func = require("./build-index.js").default; +import func from "./build-index.js"; const exec = async () => { try { diff --git a/package-lock.json b/package-lock.json index 8a3695b..cd502f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "create-react-matt", - "version": "0.0.81", + "version": "0.0.82", "lockfileVersion": 1, "requires": true, "dependencies": { From 48216071596763bc99211293166dfe6174a560c7 Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Wed, 13 Jun 2018 17:48:26 -0400 Subject: [PATCH 09/10] set the type! --- build-index.js | 1 - index.js | 1 - main-index.js | 1 + main.js | 1 + 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build-index.js b/build-index.js index c331bf5..2ee1840 100755 --- a/build-index.js +++ b/build-index.js @@ -1,4 +1,3 @@ -#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { diff --git a/index.js b/index.js index 8703ae5..36d91a7 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -#!/usr/bin/env node require("babel-polyfill"); const program = require("commander"); const { exec } = require("child_process"); diff --git a/main-index.js b/main-index.js index 271ade5..b5c328e 100644 --- a/main-index.js +++ b/main-index.js @@ -1,3 +1,4 @@ +#!/usr/bin/env node "use strict"; var _regenerator = require("babel-runtime/regenerator"); diff --git a/main.js b/main.js index bbc8805..b8b57ab 100644 --- a/main.js +++ b/main.js @@ -1,3 +1,4 @@ +#!/usr/bin/env node import func from "./build-index.js"; const exec = async () => { From 56e70ba4aca38797dfa1578fef1fcd6c506104c4 Mon Sep 17 00:00:00 2001 From: Matt Crowder Date: Thu, 14 Jun 2018 08:54:13 -0400 Subject: [PATCH 10/10] maybe this will work --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6771dd9..b135b85 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,9 @@ ".eslintrc", ".gitignore", "package.json", - "webpack.config.js" + "webpack.config.js", + "build-index.js", + "main-index.js" ], "keywords": [ "react",