_swift 20.2 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#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"
75
        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}"
76
        "--disable-prefetching[]"
77
        "--skip-update[Skip updating dependencies from their remote during a resolution]"
78
        "--disable-sandbox[Disable using the sandbox when executing subprocesses]"
79
        "--disable-package-manifest-caching[Disable caching Package.swift manifests]"
80
81
82
        "--version[]"
        "--destination[]: :_files"
        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]"
83
        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]"
84
        "--static-swift-stdlib[Link Swift stdlib statically]"
85
86
87
88
89
90
91
        "--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[]"
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
        "--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"
118
        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}"
119
        "--disable-prefetching[]"
120
        "--skip-update[Skip updating dependencies from their remote during a resolution]"
121
        "--disable-sandbox[Disable using the sandbox when executing subprocesses]"
122
        "--disable-package-manifest-caching[Disable caching Package.swift manifests]"
123
124
125
        "--version[]"
        "--destination[]: :_files"
        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]"
126
        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]"
127
        "--static-swift-stdlib[Link Swift stdlib statically]"
128
129
130
131
132
133
134
        "--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[]"
135
        "--skip-build[Skip building the executable product]"
136
137
        "--build-tests[Build both source and test targets]"
        "--repl[Launch Swift REPL for the package]"
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
    )
    _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"
159
        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}"
160
        "--disable-prefetching[]"
161
        "--skip-update[Skip updating dependencies from their remote during a resolution]"
162
        "--disable-sandbox[Disable using the sandbox when executing subprocesses]"
163
        "--disable-package-manifest-caching[Disable caching Package.swift manifests]"
164
165
166
        "--version[]"
        "--destination[]: :_files"
        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]"
167
        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]"
168
        "--static-swift-stdlib[Link Swift stdlib statically]"
169
170
171
172
173
174
175
        "--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[]"
176
177
178
179
180
181
182
183
        '(-): :->command'
        '(-)*:: :->arg'
    )
    _arguments $arguments && return
    case $state in
        (command)
            local modes
            modes=(
184
                'update:Update package dependencies'
185
                'describe:Describe the current package'
186
187
                'resolve:Resolve package dependencies'
                'tools-version:Manipulate tools version of the current package'
188
                'unedit:Remove a package from editable mode'
189
190
191
192
193
                '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'
194
                'completion-tool:Completion tool (for shell completions)'
195
                'clean:Delete build artifacts'
196
                'generate-xcodeproj:Generates an Xcode project'
197
198
                'reset:Reset the complete cache/build directory'
                'init:Initialize a new package'
199
200
201
202
203
            )
            _describe "mode" modes
            ;;
        (arg)
            case ${words[1]} in
204
205
                (update)
                    _swift_package_update
206
207
208
209
                    ;;
                (describe)
                    _swift_package_describe
                    ;;
210
211
212
213
214
215
                (resolve)
                    _swift_package_resolve
                    ;;
                (tools-version)
                    _swift_package_tools-version
                    ;;
216
217
218
                (unedit)
                    _swift_package_unedit
                    ;;
219
220
                (show-dependencies)
                    _swift_package_show-dependencies
221
                    ;;
222
223
                (fetch)
                    _swift_package_fetch
224
                    ;;
225
226
                (dump-package)
                    _swift_package_dump-package
227
                    ;;
228
229
                (edit)
                    _swift_package_edit
230
                    ;;
231
232
233
234
235
236
237
238
                (config)
                    _swift_package_config
                    ;;
                (completion-tool)
                    _swift_package_completion-tool
                    ;;
                (clean)
                    _swift_package_clean
239
240
241
242
                    ;;
                (generate-xcodeproj)
                    _swift_package_generate-xcodeproj
                    ;;
243
244
                (reset)
                    _swift_package_reset
245
                    ;;
246
247
                (init)
                    _swift_package_init
248
249
250
251
252
253
                    ;;
            esac
            ;;
    esac
}

254
_swift_package_update() {
255
256
257
258
259
    arguments=(
    )
    _arguments $arguments && return
}

260
_swift_package_describe() {
261
    arguments=(
262
        "--type[json|text]: :{_values '' 'text[describe using text format]' 'json[describe using JSON format]'}"
263
264
265
266
    )
    _arguments $arguments && return
}

267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
_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() {
301
302
303
304
305
    arguments=(
    )
    _arguments $arguments && return
}

306
_swift_package_dump-package() {
307
308
309
310
311
    arguments=(
    )
    _arguments $arguments && return
}

312
_swift_package_edit() {
313
    arguments=(
314
315
316
317
        ":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"
318
319
320
321
    )
    _arguments $arguments && return
}

322
_swift_package_config() {
323
    arguments=(
324
325
        '(-): :->command'
        '(-)*:: :->arg'
326
327
    )
    _arguments $arguments && return
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
    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
352
353
}

354
_swift_package_config_unset-mirror() {
355
    arguments=(
356
357
        "--package-url[The package dependency url]:The package dependency url: "
        "--mirror-url[The mirror url]:The mirror url: "
358
359
360
361
    )
    _arguments $arguments && return
}

362
_swift_package_config_set-mirror() {
363
    arguments=(
364
365
        "--package-url[The package dependency url]:The package dependency url: "
        "--mirror-url[The mirror url]:The mirror url: "
366
367
368
369
    )
    _arguments $arguments && return
}

370
_swift_package_config_get-mirror() {
371
    arguments=(
372
        "--package-url[The package dependency url]:The package dependency url: "
373
374
375
376
    )
    _arguments $arguments && return
}

377
_swift_package_completion-tool() {
378
    arguments=(
379
        ": :{_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]'}"
380
381
382
383
    )
    _arguments $arguments && return
}

384
_swift_package_clean() {
385
386
387
388
389
390
391
392
393
394
    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"
395
396
        "--legacy-scheme-generator[Use the legacy scheme generator]"
        "--watch[Watch for changes to the Package manifest to regenerate the Xcode project]"
397
        "--skip-extra-files[Do not add file references for extra files to the generated Xcode project]"
398
399
400
401
    )
    _arguments $arguments && return
}

402
_swift_package_reset() {
403
404
405
406
407
    arguments=(
    )
    _arguments $arguments && return
}

408
_swift_package_init() {
409
    arguments=(
410
411
        "--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: "
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
    )
    _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"
433
        "--sanitize[Turn on runtime checks for erroneous behavior]: :{_values '' 'address[enable Address sanitizer]' 'thread[enable Thread sanitizer]' 'undefined[enable Undefined Behavior sanitizer]'}"
434
        "--disable-prefetching[]"
435
        "--skip-update[Skip updating dependencies from their remote during a resolution]"
436
        "--disable-sandbox[Disable using the sandbox when executing subprocesses]"
437
        "--disable-package-manifest-caching[Disable caching Package.swift manifests]"
438
439
440
        "--version[]"
        "--destination[]: :_files"
        "(--verbose -v)"{--verbose,-v}"[Increase verbosity of informational output]"
441
        "--no-static-swift-stdlib[Do not link Swift stdlib statically \[default\]]"
442
        "--static-swift-stdlib[Link Swift stdlib statically]"
443
444
445
446
447
448
449
        "--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[]"
450
451
452
453
        "--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.]"
454
        "--num-workers[Number of tests to execute in parallel.]:Number of tests to execute in parallel.: "
455
        "(--specifier -s)"{--specifier,-s}"[]: : "
456
        "--xunit-output[]: :_files"
457
        "--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>: "
458
        "--enable-code-coverage[Test with code coverage enabled]"
459
460
461
462
463
464
465
466
    )
    _arguments $arguments && return
}

_swift_compiler() {
}

_swift