Crust is a experimental crossplatform exotic shell.
This readme contains notes to myself.
Syntax | Parsing | Eval |
---|---|---|
Literals | ✅ | ✅ |
Binary operators | ✅ | ✅ |
Unary operators | ✅ | ✅ |
Function/Command calls | ✅ | ✅ |
Blocks | ✅ | ✅ |
Function Declarations | ✅ | ✅ |
If | ✅ | ✅ |
loop | ✅ | ✅ |
while | ✅ | ✅ |
for | ✅ | ✅ |
Break | ✅ | ✅ |
Continue | ✅ | ✅ |
Return | ✅ | ✅ |
Assignment | ✅ | ✅ |
Variable declaration | ✅ | ✅ |
Export | ✅ | ✅ |
Alias | ✅ | ✅ |
Lists | ✅ | ✅ |
Indexing | ✅ | ✅ |
Slicing | ❌ | ❌ |
Maps | ✅ | ✅ |
Tables | ✅ | ✅ |
Pipes | ✅ | ✅ |
Glob | ✅ | ✅ |
Questionmark / single char glob | ✅ | ✅ |
Bracket globing char | ✅ | ✅ |
Subexpressions | ✅ | ✅ |
Assign and modify += *= etc | ✅ | ✅ |
Run command as background job | ❌ | ❌ |
Escapes sequences | ✅ | ✅ |
Closures | ✅ | ✅ |
Name | Completed | About |
---|---|---|
clear | ✅ | Clear screen |
cd | ✅ | Change working directory |
exit | ✅ | Exit shell |
echo | ✅ | Echo value back |
pwd | ✅ | Print working directory |
import | ✅ (Not locking / integrity) | Import code from file or URL |
open | ✅ | Open url with default program |
read/input | ✅ | Read user input from stdin |
load | ✅ | Read data from file |
save | ✅ | Save data to file |
(More functions to come)
Feature | Completed |
---|---|
Custom prompt | ✅ |
Starship integration | ✅ |
import https://raw.githubusercontent.com/Kl4rry/crust/main/libs/starship.crust
Columns and indexing when passing arguments.
Add builtins and functions to help when calling unknown command.
Rework defing functions to use cli parser.
Add sub commands to cli parser.
Convert statements into expressions.
Better error for unclosed delimiters.
Make command pipelines lazy.
Create a better line writer than rustyline.
Fish-like selector for completer.
A bunch of places convert values to string where it should throw an hard error instead.
Should return take a expr as optional parameter? What does even return mean as functions dont have traditional return values?