diff options
Diffstat (limited to 'plugins/swiftpm/_swift')
| -rw-r--r-- | plugins/swiftpm/_swift | 466 | 
1 files changed, 466 insertions, 0 deletions
diff --git a/plugins/swiftpm/_swift b/plugins/swiftpm/_swift new file mode 100644 index 000000000..1366b4d9c --- /dev/null +++ b/plugins/swiftpm/_swift @@ -0,0 +1,466 @@ +#compdef swift +local context state state_descr line +typeset -A opt_args + +_swift() { +    _arguments -C \ +        '(- :)--help[prints the synopsis and a list of the most commonly used commands]: :->arg' \ +        '(-): :->command' \ +        '(-)*:: :->arg' && return + +    case $state in +        (command) +            local tools +            tools=( +                'build:build sources into binary products' +                'run:build and run an executable product' +                'package:perform operations on Swift packages' +                'test:build and run tests' +            ) +            _alternative \ +                'tools:common:{_describe "tool" tools }' \ +                'compiler: :_swift_compiler' && _ret=0 +            ;; +        (arg) +            case ${words[1]} in +                (build) +                    _swift_build +                    ;; +                (run) +                    _swift_run +                    ;; +                (package) +                    _swift_package +                    ;; +                (test) +                    _swift_test +                    ;; +                (*) +                    _swift_compiler +                    ;; +            esac +            ;; +    esac +} + +_swift_dependency() { +    local dependencies +    dependencies=( $(swift package completion-tool list-dependencies) ) +    _describe '' dependencies +} + +_swift_executable() { +    local executables +    executables=( $(swift package completion-tool list-executables) ) +    _describe '' executables +} + +# Generates completions for swift build +# +# In the final compdef file, set the following file header: +# +#     #compdef _swift_build +#     local context state state_descr line +#     typeset -A opt_args +_swift_build() { +    arguments=( +        "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " +        "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " +        "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " +        "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " +        "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" +        "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" +        "(--chdir -C)"{--chdir,-C}"[]: :_files" +        "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" +        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" +        "--disable-prefetching[]" +        "--skip-update[Skip updating dependencies from their remote during a resolution]" +        "--disable-sandbox[Disable using the sandbox when executing subprocesses]" +        "--disable-package-manifest-caching[Disable caching Package.swift manifests]" +        "--version[]" +        "--destination[]: :_files" +        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" +        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" +        "--static-swift-stdlib[Link Swift stdlib statically]" +        "--enable-llbuild-library[Enable building with the llbuild library]" +        "--force-resolved-versions[]" +        "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" +        "--enable-index-store[Enable indexing-while-building feature]" +        "--disable-index-store[Disable indexing-while-building feature]" +        "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" +        "--enable-parseable-module-interfaces[]" +        "--build-tests[Build both source and test targets]" +        "--product[Build the specified product]:Build the specified product: " +        "--target[Build the specified target]:Build the specified target: " +        "--show-bin-path[Print the binary output path]" +    ) +    _arguments $arguments && return +} + +# Generates completions for swift run +# +# In the final compdef file, set the following file header: +# +#     #compdef _swift_run +#     local context state state_descr line +#     typeset -A opt_args +_swift_run() { +    arguments=( +        ":The executable to run:_swift_executable" +        "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " +        "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " +        "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " +        "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " +        "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" +        "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" +        "(--chdir -C)"{--chdir,-C}"[]: :_files" +        "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" +        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" +        "--disable-prefetching[]" +        "--skip-update[Skip updating dependencies from their remote during a resolution]" +        "--disable-sandbox[Disable using the sandbox when executing subprocesses]" +        "--disable-package-manifest-caching[Disable caching Package.swift manifests]" +        "--version[]" +        "--destination[]: :_files" +        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" +        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" +        "--static-swift-stdlib[Link Swift stdlib statically]" +        "--enable-llbuild-library[Enable building with the llbuild library]" +        "--force-resolved-versions[]" +        "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" +        "--enable-index-store[Enable indexing-while-building feature]" +        "--disable-index-store[Disable indexing-while-building feature]" +        "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" +        "--enable-parseable-module-interfaces[]" +        "--skip-build[Skip building the executable product]" +        "--build-tests[Build both source and test targets]" +        "--repl[Launch Swift REPL for the package]" +    ) +    _arguments $arguments && return +} + +# Generates completions for swift package +# +# In the final compdef file, set the following file header: +# +#     #compdef _swift_package +#     local context state state_descr line +#     typeset -A opt_args +_swift_package() { +    arguments=( +        "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " +        "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " +        "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " +        "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " +        "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" +        "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" +        "(--chdir -C)"{--chdir,-C}"[]: :_files" +        "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" +        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" +        "--disable-prefetching[]" +        "--skip-update[Skip updating dependencies from their remote during a resolution]" +        "--disable-sandbox[Disable using the sandbox when executing subprocesses]" +        "--disable-package-manifest-caching[Disable caching Package.swift manifests]" +        "--version[]" +        "--destination[]: :_files" +        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" +        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" +        "--static-swift-stdlib[Link Swift stdlib statically]" +        "--enable-llbuild-library[Enable building with the llbuild library]" +        "--force-resolved-versions[]" +        "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" +        "--enable-index-store[Enable indexing-while-building feature]" +        "--disable-index-store[Disable indexing-while-building feature]" +        "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" +        "--enable-parseable-module-interfaces[]" +        '(-): :->command' +        '(-)*:: :->arg' +    ) +    _arguments $arguments && return +    case $state in +        (command) +            local modes +            modes=( +                'update:Update package dependencies' +                'describe:Describe the current package' +                'resolve:Resolve package dependencies' +                'tools-version:Manipulate tools version of the current package' +                'unedit:Remove a package from editable mode' +                'show-dependencies:Print the resolved dependency graph' +                'fetch:' +                'dump-package:Print parsed Package.swift as JSON' +                'edit:Put a package in editable mode' +                'config:Manipulate configuration of the package' +                'completion-tool:Completion tool (for shell completions)' +                'clean:Delete build artifacts' +                'generate-xcodeproj:Generates an Xcode project' +                'reset:Reset the complete cache/build directory' +                'init:Initialize a new package' +            ) +            _describe "mode" modes +            ;; +        (arg) +            case ${words[1]} in +                (update) +                    _swift_package_update +                    ;; +                (describe) +                    _swift_package_describe +                    ;; +                (resolve) +                    _swift_package_resolve +                    ;; +                (tools-version) +                    _swift_package_tools-version +                    ;; +                (unedit) +                    _swift_package_unedit +                    ;; +                (show-dependencies) +                    _swift_package_show-dependencies +                    ;; +                (fetch) +                    _swift_package_fetch +                    ;; +                (dump-package) +                    _swift_package_dump-package +                    ;; +                (edit) +                    _swift_package_edit +                    ;; +                (config) +                    _swift_package_config +                    ;; +                (completion-tool) +                    _swift_package_completion-tool +                    ;; +                (clean) +                    _swift_package_clean +                    ;; +                (generate-xcodeproj) +                    _swift_package_generate-xcodeproj +                    ;; +                (reset) +                    _swift_package_reset +                    ;; +                (init) +                    _swift_package_init +                    ;; +            esac +            ;; +    esac +} + +_swift_package_update() { +    arguments=( +    ) +    _arguments $arguments && return +} + +_swift_package_describe() { +    arguments=( +        "--type[json|text]: :{_values '' 'text[describe using text format]' 'json[describe using JSON format]'}" +    ) +    _arguments $arguments && return +} + +_swift_package_resolve() { +    arguments=( +        ":The name of the package to resolve:_swift_dependency" +        "--version[The version to resolve at]:The version to resolve at: " +        "--branch[The branch to resolve at]:The branch to resolve at: " +        "--revision[The revision to resolve at]:The revision to resolve at: " +    ) +    _arguments $arguments && return +} + +_swift_package_tools-version() { +    arguments=( +        "--set[Set tools version of package to the given value]:Set tools version of package to the given value: " +        "--set-current[Set tools version of package to the current tools version in use]" +    ) +    _arguments $arguments && return +} + +_swift_package_unedit() { +    arguments=( +        ":The name of the package to unedit:_swift_dependency" +        "--force[Unedit the package even if it has uncommited and unpushed changes.]" +    ) +    _arguments $arguments && return +} + +_swift_package_show-dependencies() { +    arguments=( +        "--format[text|dot|json|flatlist]: :{_values '' 'text[list dependencies using text format]' 'dot[list dependencies using dot format]' 'json[list dependencies using JSON format]'}" +    ) +    _arguments $arguments && return +} + +_swift_package_fetch() { +    arguments=( +    ) +    _arguments $arguments && return +} + +_swift_package_dump-package() { +    arguments=( +    ) +    _arguments $arguments && return +} + +_swift_package_edit() { +    arguments=( +        ":The name of the package to edit:_swift_dependency" +        "--revision[The revision to edit]:The revision to edit: " +        "--branch[The branch to create]:The branch to create: " +        "--path[Create or use the checkout at this path]:Create or use the checkout at this path:_files" +    ) +    _arguments $arguments && return +} + +_swift_package_config() { +    arguments=( +        '(-): :->command' +        '(-)*:: :->arg' +    ) +    _arguments $arguments && return +    case $state in +        (command) +            local modes +            modes=( +                'unset-mirror:Remove an existing mirror' +                'set-mirror:Set a mirror for a dependency' +                'get-mirror:Print mirror configuration for the given package dependency' +            ) +            _describe "mode" modes +            ;; +        (arg) +            case ${words[1]} in +                (unset-mirror) +                    _swift_package_config_unset-mirror +                    ;; +                (set-mirror) +                    _swift_package_config_set-mirror +                    ;; +                (get-mirror) +                    _swift_package_config_get-mirror +                    ;; +            esac +            ;; +    esac +} + +_swift_package_config_unset-mirror() { +    arguments=( +        "--package-url[The package dependency url]:The package dependency url: " +        "--mirror-url[The mirror url]:The mirror url: " +    ) +    _arguments $arguments && return +} + +_swift_package_config_set-mirror() { +    arguments=( +        "--package-url[The package dependency url]:The package dependency url: " +        "--mirror-url[The mirror url]:The mirror url: " +    ) +    _arguments $arguments && return +} + +_swift_package_config_get-mirror() { +    arguments=( +        "--package-url[The package dependency url]:The package dependency url: " +    ) +    _arguments $arguments && return +} + +_swift_package_completion-tool() { +    arguments=( +        ": :{_values '' 'generate-bash-script[generate Bash completion script]' 'generate-zsh-script[generate Bash completion script]' 'list-dependencies[list all dependencies' names]' 'list-executables[list all executables' names]'}" +    ) +    _arguments $arguments && return +} + +_swift_package_clean() { +    arguments=( +    ) +    _arguments $arguments && return +} + +_swift_package_generate-xcodeproj() { +    arguments=( +        "--xcconfig-overrides[Path to xcconfig file]:Path to xcconfig file:_files" +        "--enable-code-coverage[Enable code coverage in the generated project]" +        "--output[Path where the Xcode project should be generated]:Path where the Xcode project should be generated:_files" +        "--legacy-scheme-generator[Use the legacy scheme generator]" +        "--watch[Watch for changes to the Package manifest to regenerate the Xcode project]" +        "--skip-extra-files[Do not add file references for extra files to the generated Xcode project]" +    ) +    _arguments $arguments && return +} + +_swift_package_reset() { +    arguments=( +    ) +    _arguments $arguments && return +} + +_swift_package_init() { +    arguments=( +        "--type[empty|library|executable|system-module]: :{_values '' 'empty[generates an empty project]' 'library[generates project for a dynamic library]' 'executable[generates a project for a cli executable]' 'system-module[generates a project for a system module]'}" +        "--name[Provide custom package name]:Provide custom package name: " +    ) +    _arguments $arguments && return +} + +# Generates completions for swift test +# +# In the final compdef file, set the following file header: +# +#     #compdef _swift_test +#     local context state state_descr line +#     typeset -A opt_args +_swift_test() { +    arguments=( +        "-Xcc[Pass flag through to all C compiler invocations]:Pass flag through to all C compiler invocations: " +        "-Xswiftc[Pass flag through to all Swift compiler invocations]:Pass flag through to all Swift compiler invocations: " +        "-Xlinker[Pass flag through to all linker invocations]:Pass flag through to all linker invocations: " +        "-Xcxx[Pass flag through to all C++ compiler invocations]:Pass flag through to all C++ compiler invocations: " +        "(--configuration -c)"{--configuration,-c}"[Build with configuration (debug|release) ]: :{_values '' 'debug[build with DEBUG configuration]' 'release[build with RELEASE configuration]'}" +        "--build-path[Specify build/cache directory ]:Specify build/cache directory :_files" +        "(--chdir -C)"{--chdir,-C}"[]: :_files" +        "--package-path[Change working directory before any other operation]:Change working directory before any other operation:_files" +        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}" +        "--disable-prefetching[]" +        "--skip-update[Skip updating dependencies from their remote during a resolution]" +        "--disable-sandbox[Disable using the sandbox when executing subprocesses]" +        "--disable-package-manifest-caching[Disable caching Package.swift manifests]" +        "--version[]" +        "--destination[]: :_files" +        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]" +        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]" +        "--static-swift-stdlib[Link Swift stdlib statically]" +        "--enable-llbuild-library[Enable building with the llbuild library]" +        "--force-resolved-versions[]" +        "--disable-automatic-resolution[Disable automatic resolution if Package.resolved file is out-of-date]" +        "--enable-index-store[Enable indexing-while-building feature]" +        "--disable-index-store[Disable indexing-while-building feature]" +        "--enable-pubgrub-resolver[\[Experimental\] Enable the new Pubgrub dependency resolver]" +        "--enable-parseable-module-interfaces[]" +        "--skip-build[Skip building the test target]" +        "(--list-tests -l)"{--list-tests,-l}"[Lists test methods in specifier format]" +        "--generate-linuxmain[Generate LinuxMain.swift entries for the package]" +        "--parallel[Run the tests in parallel.]" +        "--num-workers[Number of tests to execute in parallel.]:Number of tests to execute in parallel.: " +        "(--specifier -s)"{--specifier,-s}"[]: : " +        "--xunit-output[]: :_files" +        "--filter[Run test cases matching regular expression, Format: <test-target>.<test-case> or <test-target>.<test-case>/<test>]:Run test cases matching regular expression, Format: <test-target>.<test-case> or <test-target>.<test-case>/<test>: " +        "--enable-code-coverage[Test with code coverage enabled]" +    ) +    _arguments $arguments && return +} + +_swift_compiler() { +} + +_swift  | 
