xxwhirlpool
·
2026-04-12
serveit
1#!/usr/bin/env bash
2#
3# inspired by evan hahn:
4# https://codeberg.org/EvanHahn/dotfiles/src/commit/f7a9d94ae2254cb7e5f67e6e5bdb74b6467f6dec/home/bin/bin/serveit
5
6usage_help() {
7 echo "Usage: serveit [-p] [-r | -y | -c]"
8 echo "Options: -p (port, optional) | -r (ruby) | -y (python) | -c (python CGI)"
9}
10
11if [[ $# -eq 0 ]]; then
12 usage_help
13fi
14
15port_default="6969"
16
17py_server() {
18 [[ "$(command -v python3)" ]]; python3 -m http.server "${port:-$port_default}" || echo "could not run python server"
19}
20
21pycgi_server() {
22 [[ "$(command -v python3)" ]]; python3 -m http.server --bind localhost --cgi "${port:-$port_default}" || echo "could not run python CGI server"
23}
24
25rb_server() {
26 [[ "$(command -v ruby)" ]]; ruby -run -e httpd . -p "${port:-$port_default}" || echo "could not run ruby server"
27}
28
29while getopts "p:rych" opt; do
30 case "$opt" in
31 p) port="$OPTARG" ;;
32 y) py_server ;;
33 c) pycgi_server ;;
34 r) rb_server ;;
35 h) usage_help ;;
36 *) echo "something went wrong" ;;
37 esac
38done