├── .gitignore ├── README.md ├── bin └── cli ├── index.js ├── libs └── api.js └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node-maven 2 | 3 | node-maven is a CLI tool for helping you escape from search-copy-paste, when you wanna compile a maven central library. 4 | 5 | Based on [Maven Central API](http://search.maven.org/#api) 6 | 7 | # Quick Look 8 | 9 | ![](http://ww2.sinaimg.cn/large/62580dd9gw1eu29wky8q9g20nh0e40xd.gif) 10 | 11 | # Usage 12 | 13 | **First of all, you are required to have a Node.js environment.** 14 | 15 | ### Install 16 | 17 | ```shell 18 | $ npm install node-maven -g 19 | ``` 20 | 21 | ### Command 22 | ```shell 23 | $ maven search 24 | ``` 25 | 26 | Then you will get a list of search results. 27 | 28 | `Enter` to copy the maven library url (the latest version) to clipboard. 29 | 30 | `Backspace` to get out of list. 31 | 32 | # License 33 | MIT License 34 | -------------------------------------------------------------------------------- /bin/cli: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var program = require('commander') 4 | ,fs = require('fs') 5 | ,path = require('path') 6 | ,api = require('../libs/api') 7 | 8 | 9 | program 10 | .version(JSON.parse(fs.readFileSync(path.join(__dirname,'../package.json'))).version) 11 | 12 | program 13 | .command('search ') 14 | .description('Search maven repos by keyword') 15 | .action(function(keyword){ 16 | api.search(keyword); 17 | }) 18 | 19 | program.parse(process.argv); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/djyde/node-maven/5685320736d1969f8e0d614186f29d4120dcd258/index.js -------------------------------------------------------------------------------- /libs/api.js: -------------------------------------------------------------------------------- 1 | var request = require('superagent') 2 | ,colors = require('colors') 3 | ,List = require('term-list') 4 | ,moment = require('moment') 5 | ,cp = require('copy-paste') 6 | 7 | var API_ENDPOINT = 'http://search.maven.org'; 8 | 9 | module.exports = { 10 | search: function(keyword){ 11 | console.log('Searching',keyword,'...'); 12 | request 13 | .get(API_ENDPOINT + '/solrsearch/select') 14 | .query({ 15 | q: keyword, 16 | rows: 20, 17 | wt: 'json' 18 | }) 19 | .end(function(err,res){ 20 | if(!err){ 21 | if (res.body.response.docs.length === 0) { 22 | console.log(colors.red('No result for',keyword)); 23 | } else { 24 | var list = new List({ marker: '\033[36m› \033[0m', markerLength: 2 }); 25 | for (var i = 0; i < res.body.response.docs.length; i++) { 26 | var results = res.body.response.docs[i]; 27 | list.add(results.id + ':' + results.latestVersion, results.id + ' ' + results.latestVersion.yellow + ' ' + moment(results.timestamp).format('YYYY-MM-DD').green); 28 | console.log(results.id) 29 | }; 30 | list.start(); 31 | list.on('keypress',function(key,item){ 32 | switch(key.name){ 33 | case 'return': 34 | cp.copy(item,function(){ 35 | list.stop(); 36 | console.log(colors.green('Copied',item)); 37 | }) 38 | break; 39 | case 'backspace': 40 | list.stop(); 41 | break; 42 | } 43 | }) 44 | } 45 | } else { 46 | console.log(err) 47 | } 48 | }) 49 | } 50 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-maven", 3 | "version": "0.0.2", 4 | "description": "Getting maven repo url easily.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "bin": { 10 | "maven": "./bin/cli" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/djyde/node-maven.git" 15 | }, 16 | "keywords": [ 17 | "maven", 18 | "android" 19 | ], 20 | "author": "Randy Lu ", 21 | "license": "MIT", 22 | "bugs": { 23 | "url": "https://github.com/djyde/node-maven/issues" 24 | }, 25 | "homepage": "https://github.com/djyde/node-maven#readme", 26 | "dependencies": { 27 | "colors": "^1.1.2", 28 | "commander": "^2.8.1", 29 | "copy-paste": "^1.1.2", 30 | "moment": "^2.10.3", 31 | "superagent": "^1.2.0", 32 | "term-list": "^0.2.1" 33 | } 34 | } 35 | --------------------------------------------------------------------------------