Settle short alias grammar and empty-value correction
This commit is contained in:
@@ -361,9 +361,40 @@ cycles during installation, identify the participating spellings in diagnostics,
|
|||||||
and revalidate composition after later registration.
|
and revalidate composition after later registration.
|
||||||
|
|
||||||
Support individual short alias spellings, such as `-c → --color`, alongside
|
Support individual short alias spellings, such as `-c → --color`, alongside
|
||||||
long aliases. Value handling follows the target flag. Short-option clusters
|
long aliases. Canonical short spellings and aliases use the same cluster and
|
||||||
and attached-value syntax must follow CommandKit's deliberately selected grammar;
|
attached-value grammar and may mix freely within a cluster. Resolve each alias
|
||||||
verify that grammar before settling these forms under OD-6.
|
to its final canonical flag before determining whether it consumes a value.
|
||||||
|
|
||||||
|
Process short spellings left to right. Boolean flags use presence as true;
|
||||||
|
explicit boolean values require `=`. The first value-taking flag consumes the
|
||||||
|
remaining suffix, removing a separating `=` when present, or consumes the next
|
||||||
|
argument if there is no suffix. Consumed values are never searched for aliases.
|
||||||
|
Unknown spellings within a cluster produce a usage error. Preserve occurrence
|
||||||
|
order for repeatable bindings and singleton last-occurrence behavior.
|
||||||
|
|
||||||
|
With boolean aliases `-v → --verbose` and `-q → --quiet`, and value-taking
|
||||||
|
`-c → --color`:
|
||||||
|
|
||||||
|
| Input | Interpretation |
|
||||||
|
| --- | --- |
|
||||||
|
| `-vq` | `--verbose --quiet` |
|
||||||
|
| `-c blue`, `-c=blue`, or `-cblue` | `--color=blue` |
|
||||||
|
| `-vqcblue` or `-vqc blue` | `--verbose --quiet --color=blue` |
|
||||||
|
| `-cvq` | `--color=vq` |
|
||||||
|
| `-v=false` | `--verbose=false` |
|
||||||
|
| `-qv=false` | `--quiet --verbose=false` |
|
||||||
|
|
||||||
|
`-vfalse` is a cluster beginning with `-v`, not an explicit false value.
|
||||||
|
A spelling such as `-color` follows short-option parsing; long aliases use
|
||||||
|
the `--` prefix. Options still follow the complete command path, and `--`
|
||||||
|
ends option parsing.
|
||||||
|
|
||||||
|
Correct explicit empty-value handling for both canonical short spellings and
|
||||||
|
aliases: `-c=` supplies an empty string, consistently with `--color=` and
|
||||||
|
`-c ""`. The current backend instead passes the literal string `"="` for `-c=`;
|
||||||
|
this delivery corrects that behavior. Likewise, `-v=` supplies an empty value
|
||||||
|
to boolean conversion and fails conversion. This correction preserves the
|
||||||
|
distinction between an omitted value and an explicitly supplied empty value.
|
||||||
|
|
||||||
### Flag help and diagnostics
|
### Flag help and diagnostics
|
||||||
|
|
||||||
@@ -397,7 +428,9 @@ canonical binding.
|
|||||||
independent of optional-library dependencies and backend-specific exports.
|
independent of optional-library dependencies and backend-specific exports.
|
||||||
4. Integrate command and flag alias resolution with canonical routing, help, and
|
4. Integrate command and flag alias resolution with canonical routing, help, and
|
||||||
invocation identity. Use canonical flag metadata and the existing parser to
|
invocation identity. Use canonical flag metadata and the existing parser to
|
||||||
preserve values and operands, and reuse typed execution machinery.
|
preserve values and operands, and reuse typed execution machinery. Apply the
|
||||||
|
selected short-option grammar and correct explicit empty values for canonical
|
||||||
|
short spellings and aliases together.
|
||||||
5. Add focused behavioral evidence for both example mappings, group aliases,
|
5. Add focused behavioral evidence for both example mappings, group aliases,
|
||||||
longest matches, chains, group composition, cycles and nonterminating prefix
|
longest matches, chains, group composition, cycles and nonterminating prefix
|
||||||
expansion, collisions, missing targets, same-batch
|
expansion, collisions, missing targets, same-batch
|
||||||
@@ -405,7 +438,8 @@ canonical binding.
|
|||||||
acquisition, and a single execution lifecycle. Cover application-wide and
|
acquisition, and a single execution lifecycle. Cover application-wide and
|
||||||
command-scoped flag mappings, attached and separate values, option termination,
|
command-scoped flag mappings, attached and separate values, option termination,
|
||||||
mixed canonical/alias repetitions, flag chains and scope overrides, short
|
mixed canonical/alias repetitions, flag chains and scope overrides, short
|
||||||
aliases, flag help and diagnostics, and unchanged typed binding semantics.
|
aliases, mixed clusters, attached values, explicit empty-value correction,
|
||||||
|
flag help and diagnostics, and unchanged typed binding semantics.
|
||||||
6. Add maintained consumer examples and update GoDoc, the CLI reference, consumer
|
6. Add maintained consumer examples and update GoDoc, the CLI reference, consumer
|
||||||
guidance, and internal documentation when implementation lands. Validate the
|
guidance, and internal documentation when implementation lands. Validate the
|
||||||
affected modules under the [developer guide](../development.md).
|
affected modules under the [developer guide](../development.md).
|
||||||
@@ -414,8 +448,7 @@ Completion means consumers can declare alternate command paths and flag
|
|||||||
spellings with minimal wiring and invoke canonical behavior and help through
|
spellings with minimal wiring and invoke canonical behavior and help through
|
||||||
them while canonical ownership and binding semantics stay intact. Installation
|
them while canonical ownership and binding semantics stay intact. Installation
|
||||||
rejects conflicts with canonical commands and applicable flags in either
|
rejects conflicts with canonical commands and applicable flags in either
|
||||||
registration order. Remaining public API and short-option grammar details are
|
registration order. Remaining public API details are listed below.
|
||||||
listed below.
|
|
||||||
|
|
||||||
## Open Decisions
|
## Open Decisions
|
||||||
|
|
||||||
@@ -429,9 +462,3 @@ interact with application-root alias paths? What exact whitespace parsing and
|
|||||||
path validation rules accompany the selected string representation? What
|
path validation rules accompany the selected string representation? What
|
||||||
accessor names and representation expose the selected read-only entered and
|
accessor names and representation expose the selected read-only entered and
|
||||||
canonical invocation paths?
|
canonical invocation paths?
|
||||||
|
|
||||||
### OD-6: Short-option grammar
|
|
||||||
|
|
||||||
Individual short aliases are selected above. Which short-option clusters and
|
|
||||||
attached-value forms does CommandKit's selected grammar support, and how should
|
|
||||||
short aliases participate in those forms?
|
|
||||||
|
|||||||
Reference in New Issue
Block a user