--- title: Cheat sheet --- # Abra cheat sheet !!! info not all flags are listed here. !!! warning Definitely set up autocomplete or you'll be sad `abra autocomplete bash/zsh/fizsh` ### create and deploy a new app: - `abra app new $RECIPE` flags: `-s/--server`, `-D/--domain`, `-S/--secrets`, `-p/--pass` - `abra app config $APPNAME` - `abra app secret generate $APPNAME -a` flags: `-p/--pass`, `-a/--all` - `abra app deploy $APPNAME` flags: `-f/--force`, `-C/--chaos` ### undeploy and remove an app - back up any data you don't want to lose - `abra app undeploy $APPNAME` - `abra app rm --volumes $APPNAME` flags: `-f/--force`, `-V/--volumes` ### add/remove server - `abra server add $SERVER $USERNAME $SSH_PORT` flags: `-p/--provision`, `-l/--local` - `abra server remove $SERVER` flags: `-s/--server` ### upgrade abra - `abra upgrade` flags: `--rc` ### upgrade a recipe - `abra recipe upgrade $RECIPE` flags: `-x,y,z/--major,minor,patch` - `abra recipe sync $RECIPE` flags: `-x,y,z` - `abra recipe release $RECIPE [$VERSION]` flags: `-p/--publish`, `-r/--dry-run`, `-x,y,z` ### make a change to a recipe - edit the files in `~/.abra/recipe/$RECIPENAME` - deploy the changed version to your test instance - determine how serious your change is (semver.org for reference) - `abra recipe release $RECIPE [$VERSION]` ### Advanced Listing using `jq` Several `abra` commands can output JSON formatted tables, and can thus be queried and filtered with the tool [jq](https://stedolan.github.io/jq/ "jq JSON Query tool"). We can also format these outputs with [tv](https://github.com/uzimaru0000/tv "tv Table Viewer") into a pretty table. Currently, `abra recipe ls`, `abra server ls`, and `abra app ls` support the `-m` machine readable output flag which outputs JSON. #### Filter recipes by "category" `abra recipe ls -m | jq '[.[] | select(.category == "Utilities") ]' | tv` As you can see we, we're selecting all recipes where category is "Utilities". #### Filter apps by state `deployed` Note! `abra app ls -S` queries each server in your added server list, where as without the `-S` it only lists from your local copy of the sever files (thus providing no information about actual state of the apps) Note 2! `abra app ls` lists apps grouped into a server object, with statistics about the server. In `jq` we can select the entire apps list with `.[].apps[]`. `abra app ls -m -S |jq '[.[].apps[] | select(.status == "deployed") | del(.upgrade)]' |tv` The `del(.upgrade)` filter filters out available versions for the recipe in question for that row. It could be useful to leave in if you want a list of deployed apps that need an upgrade.