Releases: LeaYeh/minishell
Releases · LeaYeh/minishell
v1.0.0
Support Features
Category | Module | Function | Requirement | Status |
---|---|---|---|---|
Frontend | Lexer | Tokenizing | Tokenized user input into token list. | ✅ |
Support the PIPE character | . |
✅ | |||
Support logical AND && . |
✅ | |||
Support logical OR || . |
✅ | |||
Support left and right brackets () for SUBSHELL . |
✅ | |||
Support WORD representing basic words. |
✅ | |||
Support ASSIGNMENT_WORD = for variable assignments. |
✅ | |||
Frontend | Parser | Syntax Analysis | Analyze syntax of token list and report syntax errors based on Shift-Reduce algorithm with predefined grammar rules and then output as command table list. | ✅ |
Frontend | Expander | Brace Expansion | Perform brace expansion to generate multiple strings based on expressions enclosed in braces {} . |
✅ |
Tilde Expansion | Perform tilde expansion to replace ~ with the current user's home directory path. |
🛇 | ||
Parameter Expansion | Perform parameter expansion to replace variables and special parameters in a string. | ✅ | ||
Command Substitution | Perform command substitution to replace command output in a string. | 🛇 | ||
Arithmetic Expansion | Perform arithmetic expansion to evaluate mathematical expressions enclosed in $(()) . |
🛇 | ||
Process Substitution | Perform process substitution to use the output of a command as a file or input to another command. | 🛇 | ||
Word Splitting | Perform word splitting to split a string into separate words based on spaces, tabs, and newlines. | ✅ | ||
Wildcard Expansion | Perform filename expansion (globbing) to generate filenames matching a specified pattern. | ✅ | ||
Quote Removal | Remove quotes from strings to interpret them as literal values. | ✅ | ||
Backend | Builtins | cd | Implement cd with only a relative or absolute path. |
✅ |
echo | Implement echo with option -n . |
✅ | ||
env | Implement env with no options or arguments. |
✅ | ||
exit | Implement exit with no options. |
✅ | ||
export | Implement export with no options. |
✅ | ||
pwd | Implement pwd with no options. |
✅ | ||
unset | Implement unset with no options. |
✅ | ||
Backend | Redirection | IO Redirection | Redirected 'STDIN' with input redirection by '<' operator. | ✅ |
Redirected 'HEREDOC' with input redirection by '<<' operator. | ✅ | |||
Redirected 'STDOUT' with output redirection by '>' operator. | ✅ | |||
Redirected 'STDOUT' append with output redirection by '>>' operator. | ✅ | |||
Subsell Redirection | Implement redirections and pipes (| character). | ✅ | ||
Pipe Redirection | Redirected 'STDIN'/'STDOUT' by 'pipe()'. | ✅ | ||
Cross-end | Signal | Signal Handling | Handled 'ctrl-C' as 'SIGINT' as bash behavior. | ✅ |
Handled 'ctrl-D' as 'EOF' as bash behavior. | ✅ | |||
Handled 'ctrl-\' as 'SIGQUIT' as bash behavior. | ✅ | |||
Exception Handling | Ignored 'SIGPIPE' in internal process and set it back as default in external commands sub-process. | ✅ | ||
Used 'SIGABRT' and 'SIGTERM' to raise internal critical error to all related process and handle it depends on scenario. | ✅ |
What's Changed
- [STYLE] Modify all filename with common convention by @LeaYeh in #268
- [FIX] Print exit msg to stderr by @itislu in #270
- [FIX] Cleanup heredoc files by @itislu in #272
- [REFACTOR] Merge
SIGINT
handling of heredoc with standard by @itislu in #273 - [CD] Add norminette test to GH Actions by @itislu in #271
- [BUILD] Add
ffclean
goal to Makefile by @itislu in #275 - [FIX] Fix funcheck without
-a
option by @itislu in #277 - [FIX] Fix heredoc for subshell redirect by @itislu in #278
- [CI] Install funcheck in setup by @LeaYeh in #276
- [CHORE] Avoid misleading
ft_free_and_null()
s by @itislu in #279 - [CI] Add manually triggered norminette workflow by @itislu in #280
- [CI/CD] Fix manually triggered norminette workflow by @itislu in #284
- [CHORE] Change
size_t
toint
by @itislu in #282 - [DOC] Update readme document structure by @LeaYeh in #286
- [DOC] Add tutorial about frontend implementation by @LeaYeh in #287
- [CHORE] Add .gitattributes file for git LFS by @itislu in #288
- [DOC] Add notes from tablet by @itislu in #289
- [DOC] Add another process flow note by @itislu in #290
- [STYLE] Fix norm issues of debug folder by @itislu in #291
- [CI] Add possibility to manually trigger the test workflow for any branch by @itislu in #293
- [FIX] Fix wrong null-expansion after word-splitting and quote combination by @itislu in #283
- [STYLE] Various tiny style changes and change
shell->exit_code
tounsigned char
by @itislu in #297 - [CI] Trigger test workflow when add new tag version by @LeaYeh in #294
- [FEAT] Implement wildcard expansion for the current directory by @itislu in #292
- [FIX] Fix filename expansion in non-interactive mode by @itislu in #298
- [STYLE] Rename expander variable names by @itislu in #299
- [FEAT] Expand
$$
to PID of shell by @itislu in #300 - [FIX] Make
read_input()
more general and also us it in heredoc by @itislu in #301 - [DOC] Update badge colors in README by @itislu in #302
- [CHORE] Put
read_input()
into utils by @itislu in #303 - [FEAT] Add welcome message after init shell by @LeaYeh in #285
- [STYLE] Change all occurances of
2
toSTDERR_FILENO
by @itislu in #304 - [STYLE] Make all local functions
static
by @itislu in https://github.com/LeaY...
v0.0.2
Bugs Fix
- Fix Builtins-exit overflow scenario behavior and exit code
Enhancement
- Re-style the file name and struct for readability
What's Changed
- [CD] Fix eval tag creation by @itislu in #261
- [FIX] Fix exit codes from exit builtin by @itislu in #262
- [CD] Try to specific main branch to remote by @LeaYeh in #263
- [CD] Merge from upstream main branch by @LeaYeh in #264
- [CD] Checkout eval branch from upstream and rebasing by @LeaYeh in #265
- [CD] Ignore the merge conflict of delete files from main to eval by @LeaYeh in #266
- [CD] Force delete debug folder even though it's not exist by @LeaYeh in #267
Full Changelog: v0.0.1...v0.0.2
Release Notes - 0.0.1 (pre-eval)
Support Features
Category | Module | Function | Requirement | Status |
---|---|---|---|---|
Frontend | Lexer | Tokenizing | Tokenized user input into token list. | ✅ |
Support the PIPE character | . |
✅ | |||
Support logical AND && . |
✅ | |||
Support logical OR || . |
✅ | |||
Support left and right brackets () for SUBSHELL . |
✅ | |||
Support WORD representing basic words. |
✅ | |||
Support ASSIGNMENT_WORD = for variable assignments. |
✅ | |||
Frontend | Parser | Syntax Analysis | Analyze syntax of token list and report syntax errors based on Shift-Reduce algorithm with predefined grammar rules and then output as command table list. | ✅ |
Frontend | Expander | Brace Expansion | Perform brace expansion to generate multiple strings based on expressions enclosed in braces {} . |
✅ |
Tilde Expansion | Perform tilde expansion to replace ~ with the current user's home directory path. |
❌ | ||
Parameter Expansion | Perform parameter expansion to replace variables and special parameters in a string. | ✅ | ||
Command Substitution | Perform command substitution to replace command output in a string. | ❌ | ||
Arithmetic Expansion | Perform arithmetic expansion to evaluate mathematical expressions enclosed in $(()) . |
❌ | ||
Process Substitution | Perform process substitution to use the output of a command as a file or input to another command. | ❌ | ||
Word Splitting | Perform word splitting to split a string into separate words based on spaces, tabs, and newlines. | ✅ | ||
Wildcard Expansion | Perform filename expansion (globbing) to generate filenames matching a specified pattern. | ❌ | ||
Quote Removal | Remove quotes from strings to interpret them as literal values. | ✅ | ||
Backend | Builtins | cd | Implement cd with only a relative or absolute path. |
✅ |
echo | Implement echo with option -n . |
✅ | ||
env | Implement env with no options or arguments. |
✅ | ||
exit | Implement exit with no options. |
✅ | ||
export | Implement export with no options. |
✅ | ||
pwd | Implement pwd with no options. |
✅ | ||
unset | Implement unset with no options. |
✅ | ||
Backend | Redirection | IO Redirection | Redirected 'STDIN' with input redirection by '<' operator. | ✅ |
Redirected 'HEREDOC' with input redirection by '<<' operator. | ✅ | |||
Redirected 'STDOUT' with output redirection by '>' operator. | ✅ | |||
Redirected 'STDOUT' append with output redirection by '>>' operator. | ✅ | |||
Subsell Redirection | Implement redirections and pipes (| character). | ✅ | ||
Pipe Redirection | Redirected 'STDIN'/'STDOUT' by 'pipe()'. | ✅ | ||
Cross-end | Signal | Signal Handling | Handled 'ctrl-C' as 'SIGINT' as bash behavior. | ✅ |
Handled 'ctrl-D' as 'EOF' as bash behavior. | ✅ | |||
Handled 'ctrl-\' as 'SIGQUIT' as bash behavior. | ✅ | |||
Exception Handling | Ignored 'SIGPIPE' in internal process and set it back as default in external commands sub-process. | ✅ | ||
Used 'SIGABRT' and 'SIGTERM' to raise internal critical error to all related process and handle it depends on scenario. | ✅ |
Contributors
- Lea Yeh: https://github.com/LeaYeh
- Lukas Dullinger: https://github.com/itislu