Files
faas-cli/NOTES.md
John McCabe 706761e92a Migrate CLI to Cobra and add experimental bash completion
This adds the following commands:
- faas-cli
- faas-cli help
- faas-cli build
- faas-cli deploy
- faas-cli remove (alias: rm)
- faas-cli version
- faas-cli push

Note that the following is also added but hidden from help pending a
more robust bash completion solution, initially using the Cobra
generated bash completion but needs spf13/cobra#520 to merge before
it'll work on the OSX default Bash 3.x.
- faas-cli bashcompletion

This commit intercepts the command line args passed to `faas-cli` and
attempts to translate them from the deprecated go flag based syntax
(`faas-cli -action xxx`) to the new Cobra verb/noun based syntax
(`faas-cli xxx`), it also translates a frozen set of legacy flags (with
the go-style single-dash) into a GNU style double-dash.

Note that some special cases are included:
- changing the delete action to remove
- passing the function name as a noun to remove rather than as an arg to
`-name`
- it also handles the legacy format where args are passed after =
(`-name=fnname`).

If the translation results in a new set of args then a message is
displayed to the user (stderr) telling warning that they are using the
deprecated cli syntax and also prints the new syntax command that is
being executed and which they should use going forward.

Any errors thrown during translation result in the command failing with
it printing the error cause to stderr.

This renames the `fetchTemplates.go` file to use snake case. The
convention appears to be for snakecase - as observed in both the Go and
Kubernetes source. For example heres a random selection of source files.

-
https://github.com/kubernetes/kubernetes/blob/master/pkg/kubeapiserver/default_storage_factory_builder.go
-
https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/bash_comp_utils.go
-
https://github.com/golang/go/blob/master/src/compress/bzip2/move_to_front.go

Note that the language spec does not set a hard rule for source file
names, only for package names, but making this change for consistency.

Note that this file was initially generated by Cobra, but has been
tweaked to include some fixes.

It it an experimental initial version.

This commit adds some instructions on enabling the `faas-cli` bash
auto-completion support.

Instructions for Linux users are very light as it differs per-distro and
the assumption is that Linux users should be capable of following their
Distros instructions on enabling bash completion support.

Signed-off-by: John McCabe <john@johnmccabe.net>
2017-08-31 15:57:15 +01:00

2.9 KiB

Command Description
build verb
faas-cli prints available verbs and global flags (think of docker/kubectl etc)
faas-cli --help as above
faas-cli build help for build verb
faas-cli build --help as above
faas-cli build . Build using a local Faasfile (ie default name for the YAML) with context set to . (handlers are relative to this)
faas-cli build -f /path/to/yaml . As above but explictly pointing to YAML path or URL
faas-cli build . url-ing Context set to . but only building a specific function (thinking of the samples.yml with multiple fns). I'm a bit torn by this, probably better to avoid being clever.
deploy verb
faas-cli deploy help for build verb
faas-cli deploy --help as above
faas-cli deploy . Deploys using the Faasfile in the PWD
faas-cli deploy -f /path/to/yaml Deploys using the YAML at the specified path or URL
faas-cli deploy -f /path/to/yaml ruby-echo as above but only deploys the specified function
faas-cli deploy -f /path/to/yaml ruby-echo --force overwrites an existing function if it exists (default would be to warn that function already exists)

Spitballing some new stuff..

Command Description
image verb
faas-cli image prints available subverbs below and global flags
list sub-verb
faas-cli image list list all FaaS built images, would be based on build adding a magic label
rm sub-verb
faas-cli image rm alexellis/faas-url-ping deletes the alexellis/faas-url-ping image only if it was created by FaaS, ie has a magic label
function verb
faas-cli function prints available subverbs below and global flags
list sub-verb
faas-cli function list list all running FaaS function containers, would be based on deploy adding a magic label
rm sub-verb
faas-cli function rm shrink-image deletes the func_shrink-image.xxxx containers
describe sub-verb
faas-cli function describe shrink-image describes the func_shrink-image.xxxx containers, could allow the user to add a description to the functions yaml definition that gets added as a label to either the image of the container
provider verb
faas-cli provider list lists known FaaS providers, say prod/staging/local etc
faas-cli provider add prod https://prod:8080 --network func_functions Adds a new provider called prod, likely cache this locally, perhaps in ~/.faas-cli/
faas-cli provider rm prod Remove above from the cache
faas-cli provider login prod Prompt the user to authenticate with the provider, cache locally (Apache Brooklyns cli does something similar)
This could then enable stuff like..
faas-cli deploy -f /path/to/yaml prod override the provider in the YAML and deploy to prod