Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
cliclopts but for Node.js parseArgs. A library that formats standard usage strings using the node:util
parseArgs
options
object shape with an additional help
field added to it.
npm install argsclopts
import { printHelpText } from 'argsclopts'
import { join } from 'node:path'
import { parseArgs } from 'node:util'
/**
* @typedef {import('argsclopts').ArgscloptsParseArgsOptionsConfig} ArgscloptsParseArgsOptionsConfig
*/
const pkgPath = join(import.meta.dirname, 'package.json')
/** @type {ArgscloptsParseArgsOptionsConfig} */
const options = {
foo: {
type: 'boolean',
short: 'f',
help: 'A foo flag thats a boolean'
},
bar: {
type: 'string',
help: 'A bar flag thats a string'
}
}
await printHelpText({
options,
pkgPath
})
/*
Usage: argsclopts [options]
Example: argsclopts
--foo, -f A foo flag thats a boolean
--bar A bar flag thats a string
argsclopts (v1.0.0)
*/
const args = ['-f', '--bar', 'b']
const { values } = parseArgs({ args, options })
console.log(values)
// { foo: true, bar: 'b' }
import { formatHelpText, printHelpText, usage, header, footer } from 'argsclopts'
You can import formatHelpText
, printHelpText
, usage
, header
, footer
from argsclopts
.
s
helpText = formatHelpText({ options, [pkgPath], [name], [version], [footerFn], [headerFn], [exampleFn]})
Generate the helptText
string. Requires passing in an options
object that you provide to parseArgs
, with one additional field per flag: help
. You should also provide pkgPath
(a resolved path the package.json
) so that a bin name and version can be resolved. Otherwise, pass in a name
and version
to override any resolved data from pkgPath
. If both name
and version
are provided, a pkgPath
is required. The headerFn
, and exampleFn
can be used to override the header text and the footerFn
can be used to override the footer text.
An example options
object might look like this:
const options = {
foo: {
type: 'boolean',
short: 'f',
help: 'A foo flag thats a boolean'
},
bar: {
type: 'string',
help: 'A bar flag thats a string'
}
}
void printHelpText({ options, [pkgPath], [name], [version], [footerFn], [headerFn], [exampleFn]})
Exactly the same as formatHelpText
except it uses console.log
to print the text for you. Returns nothing.
usageText = usage(options)
Generate just the usage string with a given options
object.
headerText = header({ [pkgPath], [name], [headerFn], [exampleFn] })
Generate the headerText only. Pass in either a pkgPath
string path to the package.json
of the bin you are printing for, or a name
. The headerFn
and exampleFn
allow you to override the header text that is generated. Each function receilves an object with a name
key.
footerText = footer({ [pkgPath], [name], [version], [footerFn] })
Generate the footerText only. Pass in either a pkgPath
string path to the package.json
of the bin you are printing for, or a name
and/or version
. The footerFn
lets you override the footer text template and receives an object with a name
and version
key.
MIT
FAQs
cliclopts but for Node.js parseArgs
We found that argsclopts demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.