#!/bin/sh # cr -- compile and run. Detects language from extension. # Usage: cr file.c [args...] # cr file.cpp [args...] # cr file.go [args...] # cr file.rs [args...] # cr file.py [args...] file="$1"; shift [ -z "$file" ] && { echo "Usage: cr [args...]"; exit 1; } [ ! -f "$file" ] && { echo "File not found: $file"; exit 1; } ext="${file##*.}" base="${file%.*}" case "$ext" in c) cc -std=c11 -Wall -Wextra -Wpedantic -g -O0 \ -fsanitize=address,undefined "$file" -o "$base" -lm && "./$base" "$@" ;; cpp|cc|cxx) g++ -std=c++17 -O2 -Wall -Wextra "$file" -o "$base" && "./$base" "$@" ;; go) go run "$file" "$@" ;; rs) rustc "$file" -o "$base" && "./$base" "$@" ;; py) python3 "$file" "$@" ;; sh) sh "$file" "$@" ;; js) node "$file" "$@" ;; ts) npx tsx "$file" "$@" ;; *) echo "Unknown extension: .$ext" exit 1 ;; esac