CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 17:31:50 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"cdb96da572d9187e47bcbdbee045584e"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=o1DPdFUcShOBm52tX%2FW5iQYskAybf2qG6so7zWI0SnodNbwmXn8we1NYGPSM5OObdYAW9eLTfV6A0olB7fco6AhYJ8DZciUCeo3lr28akGfC%2BKSDTQWwFHlisNUZqh6gAWb8v4vNnnW9zoQSHt9RGo3%2FYB4M%2BycAXQiG9np7W8qlW33LoUbIdSV87tBMX5T3q0AbdtQqdFsNRhd0LXPWHWMig9OJ45WgeMFo3tKbAhQeObyHby2zm11%2BR9V5Ll8wEat2QBJ5P%2FZgZKHCya0hZQ%3D%3D--%2B%2BsfgjKZHbDC1o4y--jhAYvNbZQA7ZjRa5YFzNCQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.105460148.1753291910; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 17:31:50 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 17:31:50 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: BBC2:36F97A:F55879:121DD75:68811C85
Implement multiple command parsing (docker style) · 75lb/command-line-args Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 105
Implement multiple command parsing (docker style)
Lloyd Brookes edited this page Jan 25, 2018
·
5 revisions
We can use stopAtFirstUnknown
to parse an input argv
array several times, making complex scenarios possible.
As an example we'll recreate the docker run
command. The command line syntax for docker
accepts not one but multiple commands, in this form.
$ docker <command> [options] <image> <sub-command> [options]
This is the full example script. After each commandLineArgs()
invocation, the _unknown
list is used as input to the next invocation.
const commandLineArgs = require('command-line-args')
/* first - parse the main command name */
let mainDefinitions = [
{ name: 'name', defaultOption: true }
]
const mainCommand = commandLineArgs(mainDefinitions, { stopAtFirstUnknown: true })
let argv = mainCommand._unknown || []
console.log('mainCommand\n===========')
console.log(mainCommand)
/* second - parse the main command options */
if (mainCommand.name === 'run') {
const runDefinitions = [
{ name: 'detached', alias: 'd', type: Boolean },
{ name: 'target', defaultOption: true }
]
const runOptions = commandLineArgs(runDefinitions, { argv, stopAtFirstUnknown: true })
argv = runOptions._unknown || []
console.log('\nrunOptions\n==========')
console.log(runOptions)
/* third - parse the sub-command */
const subCommandDefinitions = [
{ name: 'name', defaultOption: true }
]
const subCommand = commandLineArgs(subCommandDefinitions, { argv, stopAtFirstUnknown: true })
console.log('\nsubCommand\n==========')
console.log(subCommand)
}
Running this command produces the following output.
$ node example.js run -d centos bash -c yum install -y httpd
mainCommand
===========
{ _unknown: [ '-d', 'centos', 'bash', '-c', 'yum', 'install', '-y', 'httpd' ],
name: 'run' }
runOptions
==========
{ _unknown: [ 'bash', '-c', 'yum', 'install', '-y', 'httpd' ],
detached: true,
target: 'centos' }
subCommand
==========
{ _unknown: [ '-c', 'yum', 'install', '-y', 'httpd' ],
name: 'bash' }
You can’t perform that action at this time.