diff --git a/package.js b/package.js new file mode 100644 index 0000000..fd93968 --- /dev/null +++ b/package.js @@ -0,0 +1,37 @@ +const {execSync} = require('child_process'); +const {join} = require('path'); +const fs = require('fs-extra') + +const cwd = process.cwd(); +const [exe, script, package] = process.argv; + +const path = join(cwd, 'packages', package); +try { + fs.accessSync(path); + console.error(`Package '${package}' already exists, aborting.`); + process.exit(1); +} +catch (error) {} + +const [scope] = require('./package.json').name.split('/'); +const name = [scope, package].join('/'); +console.log(`Copying new project '${name}' to ${path}...`); +fs.copySync( + join(cwd, 'config/package'), + path, +); +const json = { + ...require(join(path, 'package.json')), + name, +}; +fs.writeFileSync( + join(path, 'package.json'), + JSON.stringify(json, null, 2), +); + +const exec = (cmd) => execSync(cmd, {cwd: path, stdio: 'inherit'}); +console.log(`Installing...`); +exec('yarn'); + +console.log(`Testing...`); +exec('yarn run test'); diff --git a/package.json b/package.json index d452455..b45e153 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "forcepub": "lerna run forcepub", "link": "lerna run link", "lint": "lerna run lint", + "package": "node ./package.js", "test": "lerna run test --no-bail -- --silent", "unlink": "lerna run unlink", "watch": "lerna run watch --parallel"