From 75e27958b26fbc0a656389cdd3580c309ea30ab9 Mon Sep 17 00:00:00 2001 From: Cassowary Rusnov Date: Mon, 20 Feb 2023 11:47:25 -0800 Subject: [PATCH] Add machine-readable output tips to the abra cheat sheet --- docs/abra/cheat-sheet.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/abra/cheat-sheet.md b/docs/abra/cheat-sheet.md index a4f4949..37331b3 100644 --- a/docs/abra/cheat-sheet.md +++ b/docs/abra/cheat-sheet.md @@ -50,3 +50,29 @@ flags: `-p/--publish`, `-r/--dry-run`, `-x,y,z` - 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. + + +