mirror of https://github.com/knative/client.git
Command conventions doc (#270)
* Command conventions doc copied from https://docs.google.com/document/d/1Or3f51EIrdyuwlJ9IfhQdoe7F7WrjsUPEPa0Ijsv2go/edit# * Update with comments
This commit is contained in:
parent
8d7d227785
commit
8c27978855
|
|
@ -0,0 +1,71 @@
|
||||||
|
# Guidelines for `kn` Commands
|
||||||
|
|
||||||
|
Commands are generally of the form `kn <resource> <verb>`; the resource kind
|
||||||
|
forms a command group for all the operations you might want to do with that kind
|
||||||
|
of resource.
|
||||||
|
|
||||||
|
Commands that directly concern more than one resource kind may be categorized
|
||||||
|
with one of the relevant resources, or may get their own top-level verb
|
||||||
|
(eg. `connect`).
|
||||||
|
|
||||||
|
Top-level commands concerning the operation of `kn` itself, like `help` and
|
||||||
|
`version` are also okay.
|
||||||
|
|
||||||
|
## Resource
|
||||||
|
|
||||||
|
The <group>.knative.dev Kind, singluar and lowercase. For example, `service` for
|
||||||
|
`serving.knative.dev/service` or `trigger` for `eventing.knative.dev/trigger`.
|
||||||
|
|
||||||
|
## Verb
|
||||||
|
|
||||||
|
If the thing the user's doing can be described by the following commands, these
|
||||||
|
should be the name of the verb:
|
||||||
|
|
||||||
|
* `describe` prints detailed information about a single resource. It can include
|
||||||
|
status information of related or child resources, too.
|
||||||
|
|
||||||
|
* `list` prints summary information about all resources of a type, possibly
|
||||||
|
filtered by parent or label selector.
|
||||||
|
|
||||||
|
* `create` creates a resource. Accepts a `--force` flag to create-or-replace.
|
||||||
|
|
||||||
|
* `update` updates a resource based on the changes the user would like to make.
|
||||||
|
|
||||||
|
* `delete` deletes a resource
|
||||||
|
|
||||||
|
For a given resource there should be parallelism between arguments to `create`
|
||||||
|
and `update` as much as possible.
|
||||||
|
|
||||||
|
Other domain-specific verbs are possible on a case-by-case basis, like
|
||||||
|
`set-traffic` for a Knative Serving Service.
|
||||||
|
|
||||||
|
## Arguments
|
||||||
|
|
||||||
|
### Positionals
|
||||||
|
|
||||||
|
Where there's a single target resource, the resource name should be a positional
|
||||||
|
argument. It needs to be of the resource type we're talking about, eg. `kn
|
||||||
|
revision` subcommands the positional must be naming a revision.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kn service create foo --image gcr.io/things/stuff:tag
|
||||||
|
```
|
||||||
|
In this case `foo` is positional, and refers to the service to create.
|
||||||
|
|
||||||
|
### Flags
|
||||||
|
|
||||||
|
* `--force` is a flag on all create commands, and will replace the resource if
|
||||||
|
it already exists (otherwise this is an error). The resource will be *mutated*
|
||||||
|
to have a spec exactly like the resource that would otherwise be created. It
|
||||||
|
is not deleted and recreated.
|
||||||
|
|
||||||
|
* When a flag sets a particular field on create or update, it should be a short
|
||||||
|
name for the field, without necessarily specifying how it's nested. For
|
||||||
|
example, `--image=img.repo/asdf` in Knative Serving sets
|
||||||
|
`spec.template.containers[0].image`
|
||||||
|
|
||||||
|
#### Output
|
||||||
|
|
||||||
|
Commands that output information should support `--output` with a shorthand of
|
||||||
|
`-o` to choose how to frame their output, and `--template` for supplying
|
||||||
|
templates to output styles that use them.
|
||||||
Loading…
Reference in New Issue