summaryrefslogtreecommitdiffstats
path: root/src/poem/anthology/which.rs
Commit message (Collapse)AuthorAgeFilesLines
* Add back spellcheckRory Dudley2024-06-141-13/+16
| | | | | | | | | | | | | | This commit reworks spellcheck() so it is more verbose about what it returns. It also re-introduces the use of spellcheck() in Poem::recite(). Spellcheck now returns a value in the enum, Spelling: FullPath -> Indicates a full path was specified as the verb OnPath -> Indicates the verb is on the $PATH BuiltIn -> Indicates the verb is a built-in command None (Option) -> The verb does not exist This commit also removes some defunct (commented-out) code.
* Updated the way built-in commands are called/usedRory Dudley2024-06-041-11/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, built-in commands were fairly primitive, merely outputting STDOUT and STDERR with the print! macros. However, we need them to behave like normal programs, that is: - Acknowledge their verse's meter (forking, piping, etc.), - Ability to capture STDOUT and STDERR (>, 2>), - and Affect the currently running environment. For these reasons, the anthology was reworked, and now contains the Anthology struct, which mimics both std::process::{Child, Command}. The AnthologyStdin helper struct was also created, for built-ins to take input on STDIN, though no built-in is currently using it. Each built-ins' incant functions were updated to return a std::process::Output. It contains output from STDOUT, output from STDERR, and the exit code of the "process". A fix was also implemented for aliases, where the STDOUT and STDERR vectors were not being copied to the newly constructed verse. Notes: There is some cleanup that needs to happen on this patch. For one, the spellcheck function is no longer being used, so there is a generic OS error if the program cannot be found in the $PATH. Also, anthology::lookup gets called twice, which shouldn't need to happen.
* Added the 'which' built-in commandRory Dudley2024-05-201-0/+61
Added a built-in which command (for MacOS and BSD), which can check aliases, and other shell built-in commands, in addition to bins on the $PATH.