8000 GitHub - docopt/docopt.swift: A command-line interface description language and parser that will make you smile http://docopt.org/
[go: up one dir, main page]

Skip to content

docopt/docopt.swift

{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":31678801,"defaultBranch":"master","name":"docopt.swift","ownerLogin":"docopt","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-03-04T20:40:06.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1820478?v=4","public":true,"private":false,"isOrgOwned":true},"currentUser":null,"refInfo":{"name":"master","listCacheKey":"v0:1489856251.0","canEdit":false,"refType":"branch","currentOid":"550ea32104f82942c4d6577858077d09c9265838"},"tree":{"items":[{"name":"DocoptTests","path":"DocoptTests","contentType":"directory"},{"name":"Examples","path":"Examples","contentType":"directory"},{"name":"Sources","path":"Sources","contentType":"directory"},{"name":"docopt.xcodeproj","path":"docopt.xcodeproj","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".swift-version","path":".swift-version","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"Package.swift","path":"Package.swift","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"docopt.podspec","path":"docopt.podspec","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":11,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/docopt/docopt.swift/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/docopt/docopt.swift.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone docopt/docopt.swift","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Fdocopt%2Fdocopt.swift","zipballUrl":"/docopt/docopt.swift/archive/refs/heads/master.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=31678801"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"71","overviewFiles":[{"displayName":"README.md","repoName":"docopt.swift","refName":"master","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://camo.githubusercontent.com/4d12a26d3b35e93ce28a1a85b230774595937b9d3cbe8ba958098638cd0a4d8f/68747470733a2f2f7472617669732d63692e6f72672f646f636f70742f646f636f70742e73776966742e737667\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/4d12a26d3b35e93ce28a1a85b230774595937b9d3cbe8ba958098638cd0a4d8f/68747470733a2f2f7472617669732d63692e6f72672f646f636f70742f646f636f70742e73776966742e737667\" alt=\"build status\" data-canonical-src=\"https://travis-ci.org/docopt/docopt.swift.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ccode\u003edocopt.swift\u003c/code\u003e is a Swift port of \u003ca href=\"https://github.com/docopt/docopt\"\u003edocopt\u003c/a\u003e\u003c/h1\u003e\u003ca id=\"user-content-docoptswift-is-a-swift-port-of-docopt\" class=\"anchor\" aria-label=\"Permalink: docopt.swift is a Swift port of docopt\" href=\"#docoptswift-is-a-swift-port-of-docopt\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003edocopt.swift\u003c/strong\u003e helps you create most beautiful command-line interfaces \u003cem\u003eeasily\u003c/em\u003e:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSwift:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-swift notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"let doc : String = \u0026quot;\u0026quot;\u0026quot;\nNot a serious example.\n\nUsage:\n calculator_example.py \u0026lt;value\u0026gt; ( ( + | - | * | / ) \u0026lt;value\u0026gt; )...\n calculator_example.py \u0026lt;function\u0026gt; \u0026lt;value\u0026gt; [( , \u0026lt;value\u0026gt; )]...\n calculator_example.py (-h | --help)\n \nExamples:\n calculator_example.py 1 + 2 + 3 + 4 + 5\n calculator_example.py 1 + 2 '*' 3 / 4 - 5 # note quotes around '*'\n calculator_example.py sum 10 , 20 , 30 , 40\n \nOptions:\n -h, --help\n\u0026quot;\u0026quot;\u0026quot;\n\nvar args = Process.arguments\nargs.removeAtIndex(0) // arguments[0] is always the program_name\nlet result = Docopt.parse(doc, argv: args, help: true, version: \u0026quot;1.0\u0026quot;)\nprintln(\u0026quot;Docopt result: \\(result)\u0026quot;)\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003elet\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003edoc\u003c/span\u003e \u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003eString\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\"\"\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003eNot a serious example.\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003eUsage:\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py \u0026lt;value\u0026gt; ( ( + | - | * | / ) \u0026lt;value\u0026gt; )...\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py \u0026lt;function\u0026gt; \u0026lt;value\u0026gt; [( , \u0026lt;value\u0026gt; )]...\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py (-h | --help)\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e \u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003eExamples:\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py 1 + 2 + 3 + 4 + 5\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py 1 + 2 '*' 3 / 4 - 5 # note quotes around '*'\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e calculator_example.py sum 10 , 20 , 30 , 40\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e \u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003eOptions:\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e -h, --help\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\"\"\u003c/span\u003e\n\n\u003cspan class=\"pl-k\"\u003evar\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eargs\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003eProcess\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e.\u003c/span\u003earguments\nargs\u003cspan class=\"pl-kos\"\u003e.\u003c/span\u003e\u003cspan class=\"pl-en\"\u003eremoveAtIndex\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e(\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e)\u003c/span\u003e // arguments[0] is always the program_name\n\u003cspan class=\"pl-k\"\u003elet\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eresult\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003eDocopt\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e.\u003c/span\u003e\u003cspan class=\"pl-en\"\u003eparse\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e(\u003c/span\u003edoc\u003cspan class=\"pl-kos\"\u003e,\u003c/span\u003e argv\u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e args\u003cspan class=\"pl-kos\"\u003e,\u003c/span\u003e help\u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e,\u003c/span\u003e version\u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e1.0\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e)\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003eprintln\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e(\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-s\"\u003eDocopt result: \u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e\\(\u003c/span\u003eresult\u003cspan class=\"pl-kos\"\u003e)\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e)\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eObjective-C:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-objc notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"NSArray *arguments = [[NSProcessInfo processInfo] arguments];\narguments = arguments.count \u0026gt; 1 ? [arguments subarrayWithRange:NSMakeRange(1, arguments.count - 1)] : @[];\n\nNSDictionary *result = [Docopt parse:doc argv:arguments help:YES version:@\u0026quot;1.0\u0026quot; optionsFirst:NO];\nNSLog(@\u0026quot;Docopt result:\\n%@\u0026quot;, result);\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c1\"\u003eNSArray\u003c/span\u003e *arguments = [[\u003cspan class=\"pl-c1\"\u003eNSProcessInfo\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003eprocessInfo\u003c/span\u003e] \u003cspan class=\"pl-c1\"\u003earguments\u003c/span\u003e];\narguments = arguments.count \u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e ? [arguments \u003cspan class=\"pl-c1\"\u003esubarrayWithRange:\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eNSMakeRange\u003c/span\u003e(\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, arguments.count - \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e)] : @[];\n\n\u003cspan class=\"pl-c1\"\u003eNSDictionary\u003c/span\u003e *result = [Docopt \u003cspan class=\"pl-c1\"\u003eparse:\u003c/span\u003edoc \u003cspan class=\"pl-c1\"\u003eargv:\u003c/span\u003earguments \u003cspan class=\"pl-c1\"\u003ehelp:\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eYES\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003eversion:\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e@\"\u003c/span\u003e1.0\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003eoptionsFirst:\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eNO\u003c/span\u003e];\n\u003cspan class=\"pl-c1\"\u003eNSLog\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e@\"\u003c/span\u003eDocopt result:\u003cspan class=\"pl-cce\"\u003e\\n\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e%@\u003c/span\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e, result);\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eInstallation\u003c/h1\u003e\u003ca id=\"user-content-installation\" class=\"anchor\" aria-label=\"Permalink: Installation\" href=\"#installation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSwift:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eCheck out \u003ccode\u003edocopt.swift\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003edocopt\u003c/code\u003e folder to your project\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eSwift Package Manager:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-swift notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\".package(url: \u0026quot;https://github.com/docopt/docopt.swift\u0026quot;, from: \u0026quot;0.6.6\u0026quot;),\"\u003e\u003cpre\u003e\u003cspan class=\"pl-kos\"\u003e.\u003c/span\u003e\u003cspan class=\"pl-k\"\u003epackage\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e(\u003c/span\u003eurl\u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-s\"\u003ehttps://github.com/docopt/docopt.swift\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e,\u003c/span\u003e from\u003cspan class=\"pl-kos\"\u003e:\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e0.6.6\u003c/span\u003e\u003cspan class=\"pl-s\"\u003e\"\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e)\u003c/span\u003e\u003cspan class=\"pl-kos\"\u003e,\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eObjective-C:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eCheck out \u003ccode\u003edocopt.swift\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild \u003ccode\u003eDocopt\u003c/code\u003e target\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDocopt.framework\u003c/code\u003e to your project\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLicense\u003c/h1\u003e\u003ca id=\"user-content-license\" class=\"anchor\" aria-label=\"Permalink: License\" href=\"#license\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003edocopt.swift\u003c/code\u003e is released under the MIT License.\u003c/p\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"docopt.swift is a Swift port of docopt","anchor":"docoptswift-is-a-swift-port-of-docopt","htmlText":"docopt.swift is a Swift port of docopt"},{"level":1,"text":"Installation","anchor":"installation","htmlText":"Installation"},{"level":1,"text":"License","anchor":"license","htmlText":"License"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fdocopt%2Fdocopt.swift"}},{"displayName":"LICENSE","repoName":"docopt.swift","refName":"master","path":"LICENSE","preferredFileType":"license","tabName":"MIT","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fdocopt%2Fdocopt.swift"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-96e76d5fdb2c.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"overview_shared_code_dropdown_button":false,"react_blob_overlay":false,"copilot_smell_icebreaker_ux":true,"accessible_code_button":true}}}}

Repository files navigation

build status docopt.swift is a Swift port of docopt

docopt.swift helps you create most beautiful command-line interfaces easily:

Swift:

let doc : String = """
Not a serious example.

Usage:
  calculator_example.py <value> ( ( + | - | * | / ) <value> )...
  calculator_example.py <function> <value> [( , <value> )]...
  calculator_example.py (-h | --help)
  
Examples:
  calculator_example.py 1 + 2 + 3 + 4 + 5
  calculator_example.py 1 + 2 '*' 3 / 4 - 5    # note quotes around '*'
  calculator_example.py sum 10 , 20 , 30 , 40
  
Options:
  -h, --help
"""

var args = Process.arguments
args.removeAtIndex(0) // arguments[0] is always the program_name
let result = Docopt.parse(doc, argv: args, help: true, version: "1.0")
println("Docopt result: \(result)")

Objective-C:

NSArray *arguments = [[NSProcessInfo processInfo] arguments];
arguments = arguments.count > 1 ? [arguments subarrayWithRange:NSMakeRange(1, arguments.count - 1)] : @[];

NSDictionary *result = [Docopt parse:doc argv:arguments help:YES version:@"1.0" optionsFirst:NO];
NSLog(@"Docopt result:\n%@", result);

Installation

Swift:

  • Check out docopt.swift
  • Add docopt folder to your project

Swift Package Manager:

.package(url: "https://github.com/docopt/docopt.swift", from: "0.6.6"),

Objective-C:

  • Check out docopt.swift
  • Build Docopt target
  • Add Docopt.framework to your project

License

docopt.swift is released under the MIT License.

0