diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/bin/cmd.version.js b/bin/cmd.version.js new file mode 100644 index 0000000..6cfa296 --- /dev/null +++ b/bin/cmd.version.js @@ -0,0 +1,6 @@ +module.exports = function(args) { + + let { name, description, version } = require('../package.json'); + console.log({ name, description, version }); + +} \ No newline at end of file diff --git a/bin/index.js b/bin/index.js new file mode 100644 index 0000000..caed6c5 --- /dev/null +++ b/bin/index.js @@ -0,0 +1,26 @@ +#!/usr/bin/env node + +const argsparser = require('args-parser'); +const path = require('path'); +const fs = require('fs'); + +let required_command = process.argv[2] +let args = argsparser(process.argv.slice(2)); + + +let cmds = fs.readdirSync(__dirname) + .filter(file => file.startsWith("cmd")) + .reduce((result, item) => { + let name = item.replace(/^cmd\./, '').replace(/\.js$/, ''); + result[name] = path.join(__dirname, item); + return result + }, {}) + +if(!cmds[required_command]) { + console.error(`Command '${required_command}' not found!`); + console.log("Available commands:") + Object.keys(cmds).forEach(item => console.log(`\t${item}`)) + process.exit(-1); +} + +require(cmds[required_command])(args); \ No newline at end of file diff --git a/generate-service.js b/generate-service.js deleted file mode 100644 index 0f4336e..0000000 --- a/generate-service.js +++ /dev/null @@ -1 +0,0 @@ -console.log("Generate a new Service") \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f432d6e..f66b604 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,13 @@ { - "name": "api-cli", + "name": "@nclazz/apicli", "version": "1.0.0", - "lockfileVersion": 1 + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "args-parser": { + "version": "1.2.0", + "resolved": "https://nexus.nclazz.de/repository/npm_public/args-parser/-/args-parser-1.2.0.tgz", + "integrity": "sha512-PNV3dPBkPt6RC6nfpwAbaRbK4urZ6yPRQhS4cmMpa09t+Gqu4Hz6AlREFDvAxZ1DRBKkbIDhm+X/IPHW6cuaQQ==" + } + } } diff --git a/package.json b/package.json index fe1edea..5670f7b 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ { - "name": "api-cli", + "name": "@nclazz/apicli", "version": "1.0.0", "description": "Commandline interface for generating and linting api-specs.", - "main": "index.js", - "scripts": { - "generate": "node generate-service.js" + "main": "./bin/index.js", + "bin": "./bin/index.js", + "scripts": {}, + "publishConfig": { + "registry": "https://nexus.nclazz.de/repository/npm_releases/" }, "keywords": [ "api", @@ -14,5 +16,7 @@ ], "author": "Niclas Thobaben", "license": "MIT", - "dependencies": {} + "dependencies": { + "args-parser": "^1.2.0" + } }