Files
uash/uash.ua

57 lines
1.2 KiB
Plaintext
Executable File

#!/usr/bin/env uiua
┌─╴CommandLine
# "~/..." ? cwd
Pretty ↚ ⊂@~▽⊸⬚@\0≠&var"HOME"
COLORS ↚ map ⊙≡°□ ≡°⊟ [
{"red" 1} {"green" 2} {"yellow" 3} {"blue" 4}
]
ColorCode ↚ ˜⊂"\x1b[0m" ⊂$"\x1b[1;3_m"
C ↚ (
⍣(⍩(ColorCode get ⊙COLORS) °"truecolor" &var"COLORTERM"
| ◌)
)
PS₁ ← &pf ⊂(C"blue" Pretty)(°&cd C"green" " λ ")
└─╴
┌─╴Commands
# ? {"cd" ...}
CD ← (
⍣(⍩(&cd&var"HOME") °0⧻↘1
| ⍩(⍣&cd(&ep"cd: invalid path") ⊢) °1⊸⧻↘1
| &ep"cd: too many arguments")
)
# ? {"exit" [code]}
Exit ← |1.0 (
⍣(⍩(&exit 0) °0⧻↘1
| ⍩(&exit ⋕°□⊢) °1⊸⧻↘1
| &ep"exit: too many arguments")
)
# handle uiua eval and shell fallback
# ? {...}
Otherwise ← (
⍣(⍩(&pf◌)°0&runc ⊂⊙(□/◇$"_ _") ⊜□⊸≠@\s $ uiua eval --experimental
| °0&runi
| &ep⊂"failed to run " /◇$"_ _"
)
)
└─╴
┌─╴Main
F ← |1.0 (
⊜□⊸≠@\s
⍣(⍩Commands~CD ◇°"cd"⊸⊢
| ⍩Commands~Exit ◇°"exit"⊸⊢
| ⍩Commands~Otherwise °1>0⊸⧻
| ◌)
CommandLine~PS₁
)
CommandLine~PS₁
&rlF 0
└─╴