From 4b42e5fcc402310d028ac54ba8fe979f7c4470af Mon Sep 17 00:00:00 2001 From: "Rico Sta. Cruz" Date: Thu, 28 Jan 2016 02:34:55 +0800 Subject: [PATCH] Initial commit --- .gitignore | 1 + README.md | 0 bin/cnpm-install | 62 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/err.js | 4 ++++ lib/mkdirp.js | 15 ++++++++++++ package.json | 24 +++++++++++++++++++ 6 files changed, 106 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100755 bin/cnpm-install create mode 100644 lib/err.js create mode 100644 lib/mkdirp.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..3c3629e647f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/README.md b/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/bin/cnpm-install b/bin/cnpm-install new file mode 100755 index 00000000000..0c9ca4e5134 --- /dev/null +++ b/bin/cnpm-install @@ -0,0 +1,62 @@ +#!/usr/bin/env node +var readPkgUp = require('read-pkg-up') +var npa = require('npm-package-arg') +var debug = require('debug')('cnpm:install') +var dirname = require('path').dirname +var join = require('path').join +var mkdirp = require('../lib/mkdirp') + +const cli = require('meow')([ + 'Usage:', + ' $ cnpm install', + ' $ cnpm install ', + '', + 'Options:', + ' -D, --save-dev', + ' -S, --save', + ' -E, --save-exact', + ' --dry-run' +].join('\n'), { + boolean: ['save-dev', 'save', 'save-exact', 'dry-run'] +}) +// console.log(cli.flags, cli.input) + +/* + * Installs a package + * + * install(path, 'underscore@latest') + */ + +function install (modPath, pkg, options) { + debug('installing ' + pkg) + return Promise.resolve(true) +} + +/* + * Install multiple modules + */ + +function installMultiple (modPath, pkgs, options) { + return Promise.all(pkgs.map(function (pkg) { + return install(modPath, pkg, options) + })) +} + +/* + * Returns the path of package.json + */ + +function getPath () { + return readPkgUp() + .then(function (pkg) { + debug('root: ' + dirname(pkg.path)) + return dirname(pkg.path) + }) +} + +if (!module.parent) { + getPath() + .then(_ => mkdirp(join(_, 'node_modules'))) + .then(_ => installMultiple(_, cli.input, cli.flags)) + .catch(require('../lib/err')) +} diff --git a/lib/err.js b/lib/err.js new file mode 100644 index 00000000000..d876adda74b --- /dev/null +++ b/lib/err.js @@ -0,0 +1,4 @@ +module.exports = function err (error) { + console.error(err.stack) + process.exit(1) +} diff --git a/lib/mkdirp.js b/lib/mkdirp.js new file mode 100644 index 00000000000..084b1fde837 --- /dev/null +++ b/lib/mkdirp.js @@ -0,0 +1,15 @@ +var debug = require('debug')('cnpm:mkdirp') + +/* + * mkdir -p as a promise. + */ + +module.exports = function mkdirp (path) { + return new Promise(function (resolve, reject) { + debug(path) + require('mkdirp')(path, function (err) { + if (err) reject(err) + else resolve(path) + }) + }) +} diff --git a/package.json b/package.json new file mode 100644 index 00000000000..226139f8b79 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "cnpm", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Rico Sta. Cruz ", + "license": "MIT", + "dependencies": { + "meow": "3.7.0", + "npm-package-arg": "4.1.0", + "read-pkg-up": "1.0.1" + }, + "bin": { + "cnpm-install": "bin/cnpm-install" + }, + "devDependencies": { + "debug": "2.2.0", + "mkdirp": "0.5.1", + "thenify": "3.1.1" + } +}