diff options
Diffstat (limited to 'ms')
| -rwxr-xr-x | ms | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -0,0 +1,28 @@ +#!/usr/bin/env bash +# ms — modal shell dispatcher +# Usage: ms [mode] +# ms list available modes +# ms <mode> enter named mode +set -euo pipefail + +MODES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/modes" && pwd)" + +if [[ $# -eq 0 ]]; then + echo "Available modes:" + for f in "$MODES_DIR"/*.sh; do + [[ "$(basename "$f")" == "base.sh" ]] && continue + printf " %s\n" "$(basename "$f" .sh)" + done + exit 0 +fi + +mode="$1" +mode_file="$MODES_DIR/${mode}.sh" + +if [[ ! -f "$mode_file" ]]; then + echo "error: unknown mode '$mode'" >&2 + echo "Run 'ms' to list available modes." >&2 + exit 1 +fi + +exec bash "$mode_file" |
