Make
This page has many god tier gigachad snippets for makefiles that you definitely need in your workflow.
Automatic Help list generation
This snippet below automatically generates a help list for your makefile using comments above each target as the description.
# shows this help listhelp:  @printf '\tMakefile targets\n\n'  @awk ' \    function trim(s) { \      sub(/^[ \t]+/, "", s); \      sub(/[ \t]+$$/, "", s); \      return s; \    } \    /^$$/ { help = ""; next } \    /^#/ { \      help = (help ? help " " trim(substr($$0,2)) : trim(substr($$0,2))); \      next; \    } \    /^[^ \t]+:/ { \      target = $$1; sub(/:$$/, "", target); \      if (help != "") { \        printf "  %-15s %s\n", target, help; \      } \      help = ""; \    }' $(MAKEFILE_LIST)  @printf "\n"So now this can be used in your makefile like so
# compiles the c programcompile:    gcc -o main main.cand using make help will automatically generate the help list for you.
Python venv and CBOR data parsing
This snippet below creates a python venv and then creates aliases to allow decoding and encoding data for a http REST api using cbor in the request/response body using python.
This is great on arch linux cos arch doens’t like pip or anything python related for some reason.
VENV_DIR := cbor-envPYTHON   := python3PIP      := $(VENV_DIR)/bin/pip
.PHONY: setup activate help cbor-env
# sets up python venv for cbor debuggingsetup:  $(PYTHON) -m venv $(VENV_DIR)  $(PIP) install cbor2 jq
# activate python venv with `source <(make activate)`activate:  @printf '\# >> Activate CBOR venv and helpers\n\source "%s/bin/activate"\n\# cbor_get <url>: GET CBOR and pretty-print JSON\n\cbor_get() {\n\  curl -s -H "Accept: application/cbor" "$$1" \\\n\    | python3 -c '\''import sys, json, cbor2; obj = cbor2.load(sys.stdin.buffer); print(json.dumps(obj, indent=2))'\''\n\}\n\# cbor_post <url> <json>: send JSON→CBOR, POST, decode CBOR→JSON\n\cbor_post() {\n\  printf "%%s" "$$2" \\\n\    | python3 -c '\''import sys, json, cbor2; obj = json.loads(sys.stdin.read()); sys.stdout.buffer.write(cbor2.dumps(obj))'\'' \\\n\    | curl -s -X POST \\\n\        -H "Content-Type: application/cbor" \\\n\        -H "Accept: application/cbor" \\\n\        --data-binary @- "$$1" \\\n\    | python3 -c '\''import sys, json, cbor2; obj = cbor2.load(sys.stdin.buffer); print(json.dumps(obj, indent=2))'\''\n\}\n' "$(VENV_DIR)"Now this can be used like so (zsh)
Sets up environment
make setupActivates environment
source <(make activate)And now the cbor functions can be used:
cbor_get http://localhost:8080/statusThe '{}' is where the json body goes.
cbor_post http://localhost:8080/register '{}'The results of both functions can be piped to jq.