
Research
/Security News
Contagious Interview Campaign Escalates With 67 Malicious npm Packages and New Malware Loader
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
CLI scripts micro engine
#!/usr/bin/env node
const microcli = require('microcli')
const cli = microcli(process.argv, 'Script doc');
cli((options, p1, p2) => {
console.log('OPTIONS', options)
console.log('P1', p1)
console.log('P2', p2)
})
$ script.js -a --foo=bar --boo abc def
OPTIONS {a: true, foo: 'bar', boo: true }
P1 abc
P2 def
$ script.js --help
Usage: script.js
Script doc
#!/usr/bin/env node
const microcli = require('microcli')
const cli = microcli(process.argv, {
description: 'Basic script description',
params: ['p1', 'p2'],
options: {
a: 'description for a option',
foo: 'description for foo option'
},
examples: 'some examples'
});
cli((options, p1, p2) => {
console.log('OPTIONS', options)
console.log('P1', p1)
console.log('P2', p2)
})
$ script.js --help
Usage: script.js [options] [p1 p2]
Basic script description
Options:
-a description for a option
--foo description for foo option
Examples:
some examples
Annotations plays part also in validating process. So if
option which does not exist in annotations is provided, microcli
will
throw an error:
$ script.js --bar
Illegal option: --bar
Available options: -a --foo
Type "script.js --help" for more information
Also each annotation is optional and custom annotations like examples
(basically other than description, params and options) will be treated
in --help
content as additional header with string value.
$ script.js status --foo abc
OPTIONS {foo: true}
P abc
$ script.js branch --help
Usage: branch [options] [p]
Basic script description
$ script.js --foo abc
OPTIONS {foo: true}
P abc
#!/usr/bin/env node
const microcli = require('microcli')
const main = microcli(process.argv, {
description: 'base command',
params: ['p'],
options: {
foo: 'foo option'
}
})
const status = microcli(process.argv.slice(1), {
description: 'Fake git status',
params: ['p'],
options: {
foo: 'foo option'
}
})
const branch = microcli(process.argv.slice(1), {
description: 'Fake git branch',
params: ['p'],
options: {
foo: 'foo option'
}
})
switch (process.argv[2]) {
case 'status':
status((options, p) => {
console.log('OPTIONS', options)
console.log('P', p)
})
break
case 'branch':
branch((options, p) => {
console.log('OPTIONS', options)
console.log('P', p)
})
break
default:
main((options, p) => {
console.log('OPTIONS', options)
console.log('P', p)
})
}
You can provide help
function to cli
call, which can generate
custom help message, having annotations object:
#!/usr/bin/env node
const microcli = require('microcli')
const cli = microcli(process.argv, {
/* some annotations */
}, (scriptName, annotations, logger) => {
logger.log('Custom --help message')
});
cli((options, p1, p2) => {
console.log('OPTIONS', options)
console.log('P1', p1)
console.log('P2', p2)
})
FAQs
CLI scripts micro engine
The npm package microcli receives a total of 9,267 weekly downloads. As such, microcli popularity was classified as popular.
We found that microcli demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.