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>
2.9 KiB
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 |