#compdef dart # ------------------------------------------------------------------------------ # Copyright (c) 2023 Github zsh-users - https://github.com/zsh-users # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for dart 3.12.0 (https://dart.dev/) # # ------------------------------------------------------------------------------ # Authors # ------- # # * Shohei Yoshida (https://github.com/syohex) # # ------------------------------------------------------------------------------ _dart() { typeset -A opt_args local context state line local curcontext="$curcontext" local ret=1 _arguments -C -A "-*" \ '(-v --verbose)'{-v,--verbose}'[Show additional command output]' \ '(- *)--version[Print the Dart SDK version]' \ '(--enable-analytics --disable-analytics --suppress-analytics)--enable-analytics[Enable analytics]' \ '(--enable-analytics --disable-analytics --suppress-analytics)--disable-analytics[Disable analytics]' \ '(--enable-analytics --disable-analytics --suppress-analytics)--suppress-analytics[Disallow analytics for this "dart *" run without changing the analytics configuration]' \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_subcommands' \ '*::arg:->args' \ && ret=0 case "$state" in (args) case $words[1] in (help) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_subcommands' \ && ret=0 ;; (analyze) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '--fatal-infos[Treat info level issues as fatal]' \ '(--no-fatal-warnings --fatal-warnings)--fatal-warnings[Treat warnings level issue as fatal]' \ '(--no-fatal-warnings --fatal-warnings)--no-fatal-warnings[Do not treat warnings level issue as fatal]' \ '*: :_files -/' \ && ret=0 ;; (compile) _dart_compile && ret=0 ;; (create) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(-t --template)'{-t,--template}'[The project template to use]:template:(cli console package server-shelf web)' \ '(--no-pub --pub)--pub[Run "pub get" after the project has been created]' \ '(--no-pub --pub)--no-pub[Do not run "pub get" after the project has been created]' \ '--force[Force project generation even if the target directory already exists]' \ '*: :_files -/' \ && ret=0 ;; (devtools) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(- *)--version[Prints the DevTools version]' \ '--host=[Hostname to serve DevTools on(defaults to localhost)]:host' \ '--port=[Port to serve DevTools on, specify 0 to automatically use any available port(defaults to 9100)]:port' \ '--dtd-uri=[A URI pointing to a Dart Tooling Daemon]:uri' \ '--dtd-exposed-uri=[An optional URI for DartTooling Daemon that has been exposed to the front-end]:uri' \ '(--no-launch-browser --launch-browser)--launch-browser[Launches DevTools in a browser immediately at start]' \ '(--no-launch-browser --launch-browser)--no-launch-browser[Do not launches DevTools in a browser immediately at start]' \ '--machine[Sets output format to JSON for consumption in tools]' \ '--record-memory-profile=[Start devtools headlessly and write memory profiling samples to the indicated file]:file:_files' \ '--app-size-base=[Path to the base app size file used for app size]' \ '(--no-disable-cors --disable-cors)--disable-cors[Disable CORS]' \ '(--no-disable-cors --disable-cors)--no-disable-cors[Do not disable CORS]' \ '*::server_uri' \ && ret=0 ;; (doc) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(-o --output)'{-o,--output=}'[Configuration the output directory(defaults to "doc/api")]:dir:_files -/' \ '(--dry-run --validate-links)--validate-links[Display warnings for broken links]' \ '(--dry-run --validate-links)--dry-run[Try to generate the docs without saving them]' \ '*:dir:_files -/' \ && ret=0 ;; (fix) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(-n --dry-run)'{-n,--dry-run}'[Preview the proposed changes but make no changes]' \ '--apply[Apply the proposed changes]' \ '--code=[Apply fixes for one or more diagnostics codes]:codes' \ '*: :_files' \ && ret=0 ;; (format) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(-v --verbose)'{-v,--verbose}'[Show all options and flags with --help]' \ '(-o --output)'{-o,--output}'[Set where to write formatted output]:format:_dart_format_output' \ '--set-exit-if-changed[Return exit code 1 if there are any formatting changes]' \ '*:file_or_directory:_files' \ && ret=0 ;; (info) _dart_info && ret=0 ;; (pub) _dart_pub && ret=0 ;; (run) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '--observe=[Specify debug port and bind address]:port_address' \ '(--enable-asserts --no-enable-asserts)--enable-asserts[Enable assert statements]' \ '(--enable-asserts --no-enable-asserts)--no-enable-asserts[Do not enable assert statements]' \ '--verbosity[Set the verbosity level of the compilation]:verbosity:(error warning info all)' \ '*: :_files' \ && ret=0 ;; (test) local -a test_platforms=(vm vm-asan vm-msan vm-tsan chrome firefox edge node) local -a test_compilers=(dart2js dart2wasm exe kernel source) _arguments \ '(- *)'{-h,--help}'[Print this usage information]' \ '(- *)--version[Show the package:test version]' \ '*'{-n,--name}'[A substring of the name of the test to run]:name' \ '*'{-N,--plain-name}'[A plain-text substring of the name of the test to run]:plain_name' \ '*'{-t,--tags}'[Run only tests with all of the specified tags]:tag' \ '*'{-x,--exclude-tags}'[Do not run tests with any of the specified tags]:tag' \ '--run-skipped[Run skipped tests instead of skipping them]' \ '(-p --platform)'{-p,--platform}'[The platform on which to run the tests]:platform:($test_platforms)' \ '(-c --compiler)'{-c,--compiler}'[The compiler to use to run tests]:compiler:($test_compilers)' \ '(-P --preset)'{-P,--preset}'[The configuration preset to use]:preset' \ '(-j --concurrency)'{-j,--concurrency}'[The number of concurrent test suites run(defaults to 1)]:concurrency' \ '--total-shards[The total number of invocations of the test runner being run]:number' \ '--shard-index[The index of this test runner invocation]:index' \ '(--suite-load-timeout --ignore-timeouts)--suite-load-timeout[The timeout for loading a test suite]:timeout' \ '(--suite-load-timeout --ignore-timeouts)--ignore-timeouts[Ignore all timeouts]' \ '--pause-after-load[Pause for debugging before any tests execute]' \ '--debug[Run the VM and Chrome tests in debug mode]' \ '--coverage=[Gather coverage and output it to the specified directory]:dir:_files -/' \ '(--no-chain-stack-traces --chain-stack-traces)--chain-stack-traces[Use chained stack traces to provide greater exception]' \ '(--no-chain-stack-traces --chain-stack-traces)--no-chain-stack-traces[Do not use chained stack traces to provide greater exception]' \ '--no-retry[Do not rerun tests that have retry set]' \ '--test-randomize-ordering-seed[Use the specified seed to randomize the execution order of test cases]:seed' \ '(--no-fail-test --fail-test)--fail-test[Stop running tests after the first failure]' \ '(--no-fail-test --fail-test)--no-fail-test[Do not stop running tests after the first failure]' \ '(-r --reporter)'{-r,--reporter=}'[Set how to print test results]:reporter:_dart_test_reporter' \ '--file-reporter[Enable an additional reporter writing test results to a file]:reporter_file' \ '--verbose-trace[Emit stack traces with core library frames]' \ '--js-trace[Emit raw JavaScript stack traces for browser tests]' \ '(--color --no-color)--color[Use terminal colors]' \ '(--color --no-color)--no-color[Do not use terminal colors]' \ '*: :_files' \ && ret=0 ;; esac ;; esac return ret } (( $+functions[_dart_compile] )) || _dart_compile() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_compile_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '(-o --output)'{-o,--output}'[Write the output to file]:output:_files' ) case $words[1] in (aot-snapshot|exe|jit-snapshot|kernel) opts+=( '--verbosity[Sets the verbosity level of the compilation]:level:(all error info warning)' '(-p --packages)'{-p,--packages=}'[Get package locations from the specified file instead of .dart_tool/package_config.json]:config:_files' ) ;| (aot-snapshot|exe|jit-snapshot|kernel|wasm) opts+=( '*'{-d,--define=}'[Define an environment declaration]:key_value:' ) ;| (aot-snapshot|exe|kernel) opts+=( '--depfile=[Path to output Ninja depfile]:file:_files' ) ;| (aot-snapshot|exe) opts+=( '(-S --save-debugging-info)'{-S,--save-debugging-info=}'[Remove debugging information from the output and save it separately to the specified file]:file:_files' '--target-os[Compile to a specific target operating system]:os:(android fuchsia ios linux macos windows)' ) ;| (aot-snapshot|wasm) opts+=( '--enable-asserts[Enable assert statements]' ) ;| (kernel) opts+=( '(--no-link-platform --link-platform)--link-platform[Include the platform kernel in the resulting kernel file]' '(--no-link-platform --link-platform)--no-link-platform[Do not include the platform kernel in the resulting kernel file]' '(--no-embed-sources --embed-sources)--embed-sources[Embed source files in the generated kernel component]' '(--no-embed-sources --embed-sources)--no-embed-sources[Do not embed source files in the generated kernel component]' ) ;| (wasm) opts+=( '(--no-source-maps --source-maps)--source-maps[Generate a source map file]' '(--no-source-maps --source-maps)--no-source-maps[Not generate a source map file]' ) ;; (js) opts+=( '-O-[Set the compiler optimization level(defaults to -O1)]:level:(0 1 2 3 4)' ) ;; esac opts+=('*:entry_point:_files') _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_compile_subcommands] )) || _dart_compile_subcommands() { local -a commands=( "aot-snapshot:Compile Dart to an AOT snapshot" "exe:Compile Dart to a self-contained executable" "jit-snapshot:Compile Dart to a JIT snapshot" "js:Compile Dart to JavaScript" "kernel:Compile Dart to a kernel snapshot" "wasm:Compile Dart to a WebAssembly/WasmGC module" ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_format_output] )) || _dart_format_output() { local -a outputs=( "json:Print code and selection as JSON" "none:Discard output" "show:Print code to terminal" "write:Overwrite formatted files on disk(default)" ) _describe -t outputs 'output' outputs "$@" } (( $+functions[_dart_info] )) || _dart_info() { local ret=1 local -a streams=(api compiler compilerVerbose dart debugger embedder gc isolate microtask vm all) _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_info_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' ) case $words[1] in (dump) opts+=( '(--remove-file-paths --no-remove-file-paths)--remove-file-paths[Remove file paths in displayed information(default)]' '(--remove-file-paths --no-remove-file-paths)--no-remove-file-paths[Do not remove file paths in displayed information(default)]' ) ;; (record-performance) opts+=( '(-o --output-dir)'{-o,--output-dir}'[Output directory]:dir:_files -/' '--tag[Tag to filter processes by]:tab' '--record-new-processes[Record processes that start after the recorder]' '--record-only-new-process[Record only processes that start after the recorder]' '--enable-async-spans[Enable async spancs]' '(--enable-profiler --no-enable-profiler)--enable-profiler[Enable profiler(default)]' '(--enable-profiler --no-enable-profiler)--no-enable-profiler[Disable profiler(default)]' '--streams[Streams to record]:type:($streams)' ) ;; esac _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_info_subcommands] )) || _dart_info_subcommands() { local -a commands=( 'dump:Show diagnostic information about the installed tooling(default)' 'record-performance:Record performance data of running Dart tooling processes' ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub] )) || _dart_pub() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '(-v --verbose)'{-v,--verbose}'[Print detailed logging]' \ '(--color --no-color)--color[Use colors in terminal output]' \ '(--color --no-color)--no-color[Do not use colors in terminal output]' \ '(-C --directory)'{-C,--directory=}'[Run the subcommand in the directory]:dir:_files -/'\ '1: :_dart_pub_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' ) case $words[1] in (add|downgrade|get|publish|remove|upgrade) opts+=( '(- *)'{-h,--help}'[Print this usage information]' '(-n --dry-run)'{-n,--dry-run}'[Report what dependencies would change but do not change any]' '(-C --directory)'{-C,--directory=}'[Run this in the directory]:dir:_files -/' '*: :_files' ) ;| (add|downgrade|get|upgrade) opts+=( '--offline[Use cached packages instead of accessing the network]' ) ;| (add|get|remove|upgrade) opts+=( '--precompile[Build executables in immediate dependencies]' '--no-example[Do not run "example/" if it exists]' ) ;| (get) opts+=( '--enforce-lockfile[Enforce pubspec.lock]' ) ;| (publish) opts+=( '(-f --force)'{-f,--force}'[Publish without confirmation if there are no errors]' '--skip-validation[Publish without validation and resolution]' '--ignore-warnings[Do not treat warnings as fatal]' ) ;| (upgrade) opts+=( '--tighten[Updates lower bounds in pubspec.yaml to match the resolved version]' '--unlock-transitive[Also upgrades the transitive dependencies of the listed dependencies]' '--major-versions[Upgrades packages to their latest resolvable versions and updates pubspec.yaml]' ) ;| (bump) _dart_pub_bump && return 0 return 1 ;; (cache) _dart_pub_cache && return 0 return 1 ;; (deps) opts+=( '(-s --style)'{-s,--style}'[How output should be displayed]:style:(compact tree list)' '(--dev --no-dev)--dev[Include dev dependencies]' '(--dev --no-dev)--no-dev[Do not include dev dependencies]' '--executables[List all available executables]' '--json[Output dependency information in a json format]' '(-C --directory)'{-C,--directory=}'[Run this in the directory]:dir:_files -/' ) ;; (global) _dart_pub_global && return 0 ;; (outdated) opts+=( '(--no-dependency-overrides --dependency-overrides)--dependency-overrides[Show resolutions with "dependency_overrides"]' '(--no-dependency-overrides --dependency-overrides)--no-dependency-overrides[Do not show resolutions with "dependency_overrides"]' '(--no-dev-dependencies --dev-dependencies)--dev-dependencies[Take dev dependencies into account]' '(--no-dev-dependencies --dev-dependencies)--no-dev-dependencies[Do not take dev dependencies into account]' '--json[Output the results using a json format]' '(--no-prereleased --prereleases)--prereleases[Include prereleases in latest version]' '(--no-prereleased --prereleases)--no-prereleases[Do not include prereleases in latest version]' '(--no-show-all --show-all)--show-all[Include dependencies that are already fulfilling --mode]' '(--no-show-all --show-all)--no-show-all[Do not include dependencies that are already fulfilling --mode]' '(--no-transitive --transitive)--transitive[Show transitive dependencies]' '(--no-transitive --transitive)--no-transitive[Do not show transitive dependencies]' '(-C --directory)'{-C,--directory=}'[Run this in the directory]:dir:_files -/' ) ;; (token) _dart_pub_token && return 0 return 1 ;; (workspace) _dart_pub_workspace && return 0 return 1 ;; esac _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_subcommands] )) || _dart_pub_subcommands() { local -a commands=( "add:Add dependencies to 'pubspec.yaml'" "bump:Increases the version number of the current package" "cache:Work with the system cache" "deps:Print package dependencies" "downgrade:Downgrade the current package's dependencies to oldest versions" "get:Get the current package's dependencies" "global:Work with global packages" "login:Log into pub.dev" "logout:Log out of pub.dev" "outdated:Analyze your dependencies to find which ones can be upgraded" "publish:Publish the current package to pub.dev" "remove:Removes dependencies from 'pubspec.yaml'" "token:Manage authentication tokens for hosted pub repositories" "unpack:Downloads a package and unpacks it in place" "upgrade:Upgrade the current package's dependencies to latest versions" "workspace:Work with the pub workspace" ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub_bump] )) || _dart_pub_bump() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_pub_bump_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '(-n --dry-run)'{-n,--dry-run}'[Report what would change, but do not change anything]' ) _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_bump_subcommands] )) || _dart_pub_bump_subcommands() { local -a commands=( 'breaking:Increment to the next breaking version(eg. 0.1.2 -> 0.2.0)' 'major:Increment the major version number(eg. 3.1.2 -> 4.0.0)' 'minor:Increment the minor version number(eg. 3.1.2 -> 3.2.0)' 'patch:Increment the patch version number(eg. 3.1.2 -> 3.1.3)' ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub_cache] )) || _dart_pub_cache() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_pub_cache_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '*: :_files' ) case $words[1] in (add) opts+=( '--all[Install all matching versions]' '(-v --version)'{-v,--version}'[Version constraint]:version' ) ;; (clean) opts+=( '(-f --force)'{-f,--force}'[Do not ask for confirmation]' ) ;; esac _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_cache_subcommands] )) || _dart_pub_cache_subcommands() { local -a commands=( "add:Install a package" "clean:Clears the global PUB_CACHE" "repair:Reinstall cached packages" ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub_global] )) || _dart_pub_global() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_pub_global_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '*: :_files' ) case $words[1] in (activate) opts+=( '(-s --source)'{-s,--source}'[The source used to find the package]:source' '--git-path[Path of git package in repository]:git_path' '--git-ref[Git branch or commit to be retrieved]:git_ref' '(-x --executable --noexecutables)--no-executables[Do not put executables on PATH]' '(-x --executable --noexecutables)'{-x,--executable}'[Executable to place on PATH]' '--overwrite[Overwrite executables from other packages with the same name]' '(-u --hosted-url)'{-u,--hosted-url}'[A custom pub server URL for the package]:server' ) ;; (run) opts+=( '(--enable-asserts --no-enable-asserts)--enable-asserts[Enable assert statements]' '(--enable-asserts --no-enable-asserts)--no-enable-asserts[Do not enable assert statements]' '*--enable-experiment=[Runs the executable in a VM with the given experiments enabled]:experiment' ) ;; esac _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_global_subcommands] )) || _dart_pub_global_subcommands() { local -a commands=( "activate:Make a package's executables globally available" "deactivate:Remove a previously activated package" "list:List globally activated packages" "run:Run an executable from a globally activated package" ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub_token] )) || _dart_pub_token() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_pub_token_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '*: :_files' ) case $words[1] in (add) opts+=( '--env-var=[Read the secret token from this environment variable]:envvar' ) ;; (remove) opts+=( '--all[Remove all secret tokens]' ) ;; esac _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_token_subcommands] )) || _dart_pub_token_subcommands() { local -a commands=( "add:Add an authentication token for a package repository" "list:List servers for which a token exists" "remove:Remove secret token for package repository at hosted-url" ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_pub_workspace] )) || _dart_pub_workspace() { local ret=1 _arguments -C \ '(- *)'{-h,--help}'[Print this usage information]' \ '1: :_dart_pub_workspace_subcommands' \ '*:: :->arg' \ && ret=0 case $state in (arg) local -a opts=( '(- *)'{-h,--help}'[Print this usage information]' '--json[Output information in a json format]' ) _arguments "$opts[@]" && ret=0 ;; esac return ret } (( $+functions[_dart_pub_workspace_subcommands] )) || _dart_pub_workspace_subcommands() { local -a commands=( 'list:List all packages in the workspace and their directory' ) _describe -t commands 'command' commands "$@" } (( $+functions[_dart_test_reporter] )) || _dart_test_reporter() { local -a reporters=( "compact:A single line, updated continuously" "expanded:A separate line for each update" "failures-only:A separate line for failing tests with no output for passing tests" "github:A custom reporter for GitHub Actions" "json:A machine-readable format" "silent:A reporter with no output" ) _describe -t reporters 'reporter' reporters "$@" } (( $+functions[_dart_subcommands] )) || _dart_subcommands() { local -a commands=( "analyze:Analyze Dart code in a directory" "compile:Compile Dart to various formats" "create:Create a new Dart project" "devtools:Open DevTools (optionally connecting to an existing application)" "doc:Generate API documentation for Dart projects" "fix:Apply automated fixes to Dart source code" "format:Idiomatically format Dart source code" "info:Show diagnostic information about the installed tooling" "pub:Work with packages" "run:Run a Dart program" "test:Run tests for a project" ) _describe -t commands 'command' commands "$@" } _dart "$@" # Local Variables: # mode: Shell-Script # sh-indentation: 2 # indent-tabs-mode: nil # sh-basic-offset: 2 # End: # vim: ft=zsh sw=2 ts=2 et