diff --git a/package.json b/package.json index f795ac6..4bef0aa 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,16 @@ "url": "https://github.com/hci-lab/vispack/blob/master/LICENSE-MIT" } ], - "main": "src/vispack", + "bin": { + "vispack": "dist/vispack.js" + }, + "main": "dist/vispack", "engines": { "node": ">=5.1.0" }, + "preferGlobal": "true", "scripts": { + "preinstall": "coffee --bare --no-header --output dist --compile src", "test": "grunt test" }, "devDependencies": { @@ -43,6 +48,7 @@ }, "keywords": [], "dependencies": { + "commander": "^2.9.0", "extfs": "0.0.7", "fs-extra": "^0.26.2", "jethro": "^2.6.3" diff --git a/src/vispack.coffee b/src/vispack.coffee index 9e69f83..3259da7 100644 --- a/src/vispack.coffee +++ b/src/vispack.coffee @@ -1,43 +1,60 @@ +`#!/usr/bin/env node +` ### project | vispack url | https://github.com/hci-lab/vispack/blob/master/src/vispack.coffee -module | +module | vispack author | YusufMohamed -description | +description | a cli utility to install and remove plugins. Copyright (c) 2015 HCI Lab. Licensed under the MIT license. ### -exec = require 'child_process' -logger = require 'jethro' -fs = require 'extfs' -fse = require 'fs-extra' - -commands = process.argv.slice 2 - -if commands[0] is 'remove' - plugin_name = commands[1] - fs.getDirs process.cwd() + '\\plugins\\node_modules\\' + plugin_name, (err, dirs) -> - if err - console.log 'directory not found' - else - plugin_dir = process.cwd() + '\\plugins\\node_modules\\' + plugin_name - fse.remove plugin_dir, (err)-> - if err - logger 'Error', 'Remove', err - logger 'Info' , 'Remove' , 'Success' - - - - - -if commands[0] is 'install' - github_url = commands[1] - prefix = './plugins' - str = 'npm install --prefix ' + prefix + ' ' + github_url - exec.exec str, (error,stdout,stderr) -> - logger 'Info' , 'stdout' , stdout +exec = require 'child_process' +logger = require 'jethro' +fs = require 'extfs' +fse = require 'fs-extra' +program = require 'commander' +pjson = require '../package.json' + + +program +.version pjson.version +.option '-I, --install [plugin]', 'add a new plugin' +.option '-R, --remove [plugin]', 'remove installed plugin' + +program.on '--help', ()-> + console.log ' Examples:' + console.log '' + console.log ' $ vispack install underscore' + console.log ' $ vispack remove underscore' + console.log '' + +program.parse(process.argv); + + + +if program.install is true + logger 'Error', 'vispack', 'missing arguments. [vispack -h] for more help.' +else if program.remove is true + logger 'Error', 'vispack', 'missing arguments. [vispack -h] for more help.' +else if program.install isnt true and program.remove is undefined and program.install isnt undefined + package_name = program.install + install_dir = process.env.APPDATA + '/npm/node_modules/vispack' || (process.platform == 'darwin' ? process.env.HOME + 'Library/Preference/npm/node_modules/vispack' : '/usr/lib/node_modules/vispack') + prefix = install_dir + '/plugins' + str = 'npm install --prefix ' + prefix + ' ' + package_name + exec.exec str ,(error,stdout,stderr) -> + logger 'Info' , 'vispack installer' , stdout + if error isnt null + logger 'Error', 'vispack installer' , 'something wrong happened. try again later.' +else if program.remove isnt true and program.install is undefined and program.remove isnt undefined + package_name = program.remove + install_dir = process.env.APPDATA + '/npm/node_modules/vispack' || (process.platform == 'darwin' ? process.env.HOME + 'Library/Preference/npm/node_modules/vispack' : '/var/local/npm/node_modules/vispack') + prefix = install_dir + '/plugins' + str = 'npm remove --prefix ' + prefix + ' ' + package_name + exec.exec str ,(error,stdout,stderr) -> + logger 'Info' , 'vispack removal' , stdout if error isnt null - logger 'Error', 'exec error' , error + logger 'Error', 'vispack removal' , 'something wrong happened. try again later.' #exports.awesome = -> # "awesome" diff --git a/test/vispack_test.coffee b/test/vispack_test.coffee index 70cd0a8..3ccbaa8 100644 --- a/test/vispack_test.coffee +++ b/test/vispack_test.coffee @@ -6,7 +6,7 @@ sinonChai = require('sinon-chai') chai.use(sinonChai) -vispack = require('../src/vispack.coffee') +#vispack = require('../src/vispack.coffee') describe "test", -> beforeEach (done) ->