~kris/dots

srice

srice/.local/bin/cr -rw-r--r-- 1.0 KiB
e98f3b03 — Kris Yotam chore: sync local state after restore (push updates, no pull) a month ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/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 <file> [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