chore: untrack and gitignore docs/ directory
- SHA
a98df8bb7ed1e3a3dfd6dd1386e442cf9970ca13- Parents
-
fd95775 - Tree
86851d9
a98df8b
a98df8bb7ed1e3a3dfd6dd1386e442cf9970ca13fd95775
86851d9| Status | File | + | - |
|---|---|---|---|
| M |
.gitignore
|
1 | 0 |
| D |
docs/RUSH.md
|
0 | 10 |
| D |
docs/roadmap_overview.md
|
0 | 114 |
| D |
docs/roadmap_phase0.md
|
0 | 29 |
| D |
docs/roadmap_phase1.md
|
0 | 62 |
.gitignoremodified@@ -15,3 +15,4 @@ Cargo.lock | ||
| 15 | 15 | .DS_Store |
| 16 | 16 | Thumbs.db |
| 17 | 17 | CLAUDE.md |
| 18 | +docs/ | |
docs/RUSH.mddeleted@@ -1,10 +0,0 @@ | ||
| 1 | -# RUSH | |
| 2 | -the rust shell | |
| 3 | - | |
| 4 | -rush aims to be a modern, friendly, and fast shell | |
| 5 | - | |
| 6 | -it should have 100% parity with bash, but also have some of the friendly features of fish. | |
| 7 | - | |
| 8 | -it should follow all standard shell protocols and follow other FOSS projects for guidance. | |
| 9 | - | |
| 10 | -we commit often and avoid coauthorship and Generated with ... messages. | |
docs/roadmap_overview.mddeleted@@ -1,114 +0,0 @@ | ||
| 1 | -# Rush Shell - Development Roadmap | |
| 2 | - | |
| 3 | -## Vision | |
| 4 | - | |
| 5 | -A modern, friendly, and fast shell with 100% bash compatibility and fish-like features. | |
| 6 | - | |
| 7 | -## Development Approach | |
| 8 | - | |
| 9 | -**Incremental**: Start with minimal working REPL, add features iteratively. Each phase produces a working shell with progressively more capabilities. | |
| 10 | - | |
| 11 | -## Phases | |
| 12 | - | |
| 13 | -### Phase 0: Project Setup ✅ | |
| 14 | -**Status**: Completed | |
| 15 | -**Goal**: Establish workspace structure | |
| 16 | -- 7-crate workspace architecture | |
| 17 | -- All dependencies configured | |
| 18 | -- Directory structure established | |
| 19 | - | |
| 20 | -### Phase 1: Minimal REPL 🔜 | |
| 21 | -**Status**: Next | |
| 22 | -**Goal**: Interactive shell that executes basic commands | |
| 23 | -- Simple command parsing | |
| 24 | -- External command execution | |
| 25 | -- Basic REPL with reedline | |
| 26 | -- **Validation**: Can run `ls`, `pwd`, `echo hello world` | |
| 27 | - | |
| 28 | -### Phase 2: Variables & Expansion | |
| 29 | -**Goal**: Shell variables and expansions | |
| 30 | -- Variable assignments and references | |
| 31 | -- Parameter expansion (`${VAR}`, `${VAR:-default}`) | |
| 32 | -- Command substitution `$(cmd)` | |
| 33 | -- Word splitting | |
| 34 | - | |
| 35 | -### Phase 3: Pipelines & Redirection | |
| 36 | -**Goal**: Pipelines and I/O redirection | |
| 37 | -- Pipeline syntax: `cmd1 | cmd2 | cmd3` | |
| 38 | -- Redirections: `<`, `>`, `>>`, `2>`, `2>&1`, `&>` | |
| 39 | -- Pipe creation and management | |
| 40 | - | |
| 41 | -### Phase 4: Control Flow | |
| 42 | -**Goal**: if/while/for/case statements | |
| 43 | -- Conditional evaluation (if/then/else/fi) | |
| 44 | -- Loop constructs (while/for) | |
| 45 | -- Case statement matching | |
| 46 | -- Built-in test command | |
| 47 | - | |
| 48 | -### Phase 5: Job Control | |
| 49 | -**Goal**: Background jobs, fg/bg, signals | |
| 50 | -- Job tracking and process groups | |
| 51 | -- Terminal control | |
| 52 | -- Signal handling (SIGCHLD, SIGTSTP, SIGINT) | |
| 53 | -- Built-ins: `jobs`, `fg`, `bg` | |
| 54 | - | |
| 55 | -### Phase 6: Fish Features | |
| 56 | -**Goal**: Syntax highlighting, suggestions, completions | |
| 57 | -- Real-time syntax highlighting | |
| 58 | -- History-based auto-suggestions | |
| 59 | -- Smart tab completion | |
| 60 | -- Better error messages | |
| 61 | - | |
| 62 | -### Phase 7: Bash Compatibility Hardening | |
| 63 | -**Goal**: Close compatibility gaps | |
| 64 | -- Extended glob patterns | |
| 65 | -- Advanced parameter expansion | |
| 66 | -- Brace expansion, arithmetic expansion | |
| 67 | -- Here-documents, functions, arrays, subshells | |
| 68 | - | |
| 69 | -## Success Criteria | |
| 70 | - | |
| 71 | -- **Phase 1-3**: Daily command-line use (files, git, basic scripts) | |
| 72 | -- **Phase 4-5**: Run moderately complex bash scripts unmodified | |
| 73 | -- **Phase 6**: Better UX than bash for interactive use | |
| 74 | -- **Phase 7**: 90%+ compatibility with common bash patterns | |
| 75 | - | |
| 76 | -## Key Features | |
| 77 | - | |
| 78 | -### Bash Compatibility | |
| 79 | -- Command execution and pipelines | |
| 80 | -- Variables and expansions | |
| 81 | -- Control flow (if/while/for/case) | |
| 82 | -- Job control | |
| 83 | -- Full POSIX shell compliance | |
| 84 | - | |
| 85 | -### Fish-Inspired Features | |
| 86 | -- Syntax highlighting | |
| 87 | -- Autosuggestions from history | |
| 88 | -- Better error messages | |
| 89 | -- Improved tab completion | |
| 90 | - | |
| 91 | -## Architecture | |
| 92 | - | |
| 93 | -7-crate modular design: | |
| 94 | -- **rush-cli**: Main binary and REPL orchestration | |
| 95 | -- **rush-parser**: Pest PEG parser for shell syntax | |
| 96 | -- **rush-expand**: Variable/glob expansion engine | |
| 97 | -- **rush-executor**: Command execution and pipelines | |
| 98 | -- **rush-job**: Job control and process management | |
| 99 | -- **rush-eval**: Control flow evaluation engine | |
| 100 | -- **rush-interactive**: Fish-like interactive features | |
| 101 | - | |
| 102 | -## Technology Stack | |
| 103 | - | |
| 104 | -- **Parser**: Pest (PEG) | |
| 105 | -- **REPL**: reedline | |
| 106 | -- **Terminal**: crossterm | |
| 107 | -- **Unix APIs**: nix | |
| 108 | -- **Glob**: globset | |
| 109 | -- **Error handling**: thiserror | |
| 110 | - | |
| 111 | -## Current Status | |
| 112 | - | |
| 113 | -**Phase 0**: ✅ Complete - Workspace established and compiling | |
| 114 | -**Phase 1**: 🔜 Ready to begin - Minimal REPL implementation next | |
docs/roadmap_phase0.mddeleted@@ -1,29 +0,0 @@ | ||
| 1 | -# Phase 0: Project Setup | |
| 2 | - | |
| 3 | -**Status**: ✅ Completed | |
| 4 | -**Goal**: Establish workspace structure | |
| 5 | - | |
| 6 | -## Tasks | |
| 7 | - | |
| 8 | -- [x] Initialize Cargo workspace with all 7 crates | |
| 9 | -- [x] Add dependencies to each crate's Cargo.toml | |
| 10 | -- [x] Create basic crate structure (lib.rs/main.rs files) | |
| 11 | -- [x] Set up directory structure | |
| 12 | - | |
| 13 | -## Deliverable | |
| 14 | - | |
| 15 | -✅ Compiling workspace with placeholder code | |
| 16 | - | |
| 17 | -## Crates Created | |
| 18 | - | |
| 19 | -1. **rush-cli** - Main binary and REPL (binary crate) | |
| 20 | -2. **rush-parser** - Lexer/parser (library) | |
| 21 | -3. **rush-expand** - Variable/glob expansion (library) | |
| 22 | -4. **rush-executor** - Command execution (library) | |
| 23 | -5. **rush-job** - Job control (library) | |
| 24 | -6. **rush-eval** - Control flow evaluation (library) | |
| 25 | -7. **rush-interactive** - Fish-like features (library) | |
| 26 | - | |
| 27 | -## Next Steps | |
| 28 | - | |
| 29 | -Proceed to Phase 1: Minimal REPL | |
docs/roadmap_phase1.mddeleted@@ -1,62 +0,0 @@ | ||
| 1 | -# Phase 1: Minimal Shell (Interactive + Non-Interactive) | |
| 2 | - | |
| 3 | -**Status**: 🚧 In Progress | |
| 4 | -**Goal**: Full-featured shell that executes basic commands in both interactive and non-interactive modes | |
| 5 | - | |
| 6 | -## Tasks | |
| 7 | - | |
| 8 | -### rush-cli | |
| 9 | -- [ ] Command-line argument parsing (clap) | |
| 10 | - - [ ] Interactive mode (default when terminal) | |
| 11 | - - [ ] `-c "command"` flag for command strings | |
| 12 | - - [ ] Script file execution | |
| 13 | - - [ ] Stdin detection (isatty) | |
| 14 | -- [ ] Interactive mode with reedline | |
| 15 | - - [ ] Basic REPL loop (read → parse → execute → print) | |
| 16 | - - [ ] Prompt rendering | |
| 17 | - - [ ] Ctrl+C and Ctrl+D handling | |
| 18 | -- [ ] Non-interactive mode | |
| 19 | - - [ ] Read from file | |
| 20 | - - [ ] Read from stdin | |
| 21 | - - [ ] Execute and exit with proper status code | |
| 22 | - | |
| 23 | -### rush-parser | |
| 24 | -- [ ] Create minimal pest grammar (simple commands only) | |
| 25 | -- [ ] Define AST types: `SimpleCommand { args: Vec<String> }` | |
| 26 | -- [ ] Implement parser that handles: `ls`, `echo hello`, `cat file.txt` | |
| 27 | -- [ ] Handle empty lines and comments (#) | |
| 28 | - | |
| 29 | -### rush-executor | |
| 30 | -- [ ] Execute external commands via `std::process::Command` | |
| 31 | -- [ ] PATH resolution | |
| 32 | -- [ ] Return exit codes | |
| 33 | -- [ ] Proper stdout/stderr handling | |
| 34 | -- [ ] Environment variable inheritance | |
| 35 | - | |
| 36 | -## Validation Criteria | |
| 37 | - | |
| 38 | -### Interactive Mode | |
| 39 | -Must be able to run interactively: | |
| 40 | -- `ls` | |
| 41 | -- `pwd` | |
| 42 | -- `echo hello world` | |
| 43 | -- Exit with Ctrl+D or `exit` command | |
| 44 | - | |
| 45 | -### Non-Interactive Mode | |
| 46 | -Must work with: | |
| 47 | -- `rush -c "ls"` | |
| 48 | -- `echo "pwd" | rush` | |
| 49 | -- `rush script.sh` (where script.sh contains commands) | |
| 50 | -- Proper exit codes (0 on success, non-zero on failure) | |
| 51 | - | |
| 52 | -## Files to Create | |
| 53 | - | |
| 54 | -1. `crates/rush-parser/src/grammar.pest` - Pest PEG grammar | |
| 55 | -2. `crates/rush-parser/src/ast.rs` - AST type definitions | |
| 56 | -3. `crates/rush-parser/src/parser.rs` - Parser implementation | |
| 57 | -4. `crates/rush-cli/src/repl.rs` - REPL loop | |
| 58 | -5. `crates/rush-executor/src/command.rs` - Command execution | |
| 59 | - | |
| 60 | -## Next Steps | |
| 61 | - | |
| 62 | -After Phase 1 completion, proceed to Phase 2: Variables & Expansion | |