An Express-like HTTP router for Bash compatible with CGI 1.1
Go to file
2022-09-28 23:33:08 -06:00
examples Added use method 2022-09-28 23:33:08 -06:00
src Added use method 2022-09-28 23:33:08 -06:00
README.md Added use method 2022-09-28 23:33:08 -06:00

Exprash

An Express-like HTTP router for Bash compatible with CGI 1.1

I'm aware that the name of this project evokes a feeling of physical disgust. That is by design.

Usage/Examples

Here is some leaked source code for my brand new Cat website. Do not steal!

#!/bin/bash
printf '%s\n\n' 'Content-Type: text/html';

source exprash.sh;

declare -A cats;
cats[calico]="Calico";
cats[sphynx]="Sphynx";
cats[ragdoll]="Ragdoll";
cats[scottish_fold]="Scottish Fold";

get '/' && {
  printf '<h1>Cats</h1>\n';
  printf '<ul>\n';
  for key in "${!cats[@]}"; do
    printf '<li><a href="cats/%s">%s</a></li>\n' "$key" "${cats[$key]}";
  done
  printf '</ul>\n';
}

get '/cats/:cat' && {
  key=$(param 'cat');

  if [[ -v "cats[$key]" ]]; then
    printf '<h1>Your Cat: %s</h1>\n' "${cats[$key]}";
  else
    next;
  fi;
}

use && {
  printf '<h1>Error: Cannot find that cat</h1>\n';
}

License

WTFPL