(buf io.StringWriter, name string, annotations map[string][]string, cmd *Command)
| 457 | } |
| 458 | |
| 459 | func writeFlagHandler(buf io.StringWriter, name string, annotations map[string][]string, cmd *Command) { |
| 460 | for key, value := range annotations { |
| 461 | switch key { |
| 462 | case BashCompFilenameExt: |
| 463 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) |
| 464 | |
| 465 | var ext string |
| 466 | if len(value) > 0 { |
| 467 | ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|") |
| 468 | } else { |
| 469 | ext = "_filedir" |
| 470 | } |
| 471 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) |
| 472 | case BashCompCustom: |
| 473 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) |
| 474 | |
| 475 | if len(value) > 0 { |
| 476 | handlers := strings.Join(value, "; ") |
| 477 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", handlers)) |
| 478 | } else { |
| 479 | WriteStringAndCheck(buf, " flags_completion+=(:)\n") |
| 480 | } |
| 481 | case BashCompSubdirsInDir: |
| 482 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) |
| 483 | |
| 484 | var ext string |
| 485 | if len(value) == 1 { |
| 486 | ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0] |
| 487 | } else { |
| 488 | ext = "_filedir -d" |
| 489 | } |
| 490 | WriteStringAndCheck(buf, fmt.Sprintf(" flags_completion+=(%q)\n", ext)) |
| 491 | } |
| 492 | } |
| 493 | } |
| 494 | |
| 495 | const cbn = "\")\n" |
| 496 |
no test coverage detected