From b8802ffeaeb6f08d61624063311aa6c9bedd63e3 Mon Sep 17 00:00:00 2001 From: reuben olinsky Date: Fri, 7 Jun 2024 11:24:32 -0700 Subject: [PATCH] Minor docs changes (#47) --- LICENSE | 2 +- README.md | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index 4982e0b2..3d3cb786 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 reuben olinsky +Copyright (c) 2024 reuben olinsky Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 61ac514d..d455d8e3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # brush +[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE) [![CI workflow badge](https://github.com/reubeno/brush/actions/workflows/ci.yaml/badge.svg)](https://github.com/reubeno/brush/actions/workflows/ci.yaml) [![Devcontainer workflow badge](https://github.com/reubeno/brush/actions/workflows/devcontainer.yaml/badge.svg)](https://github.com/reubeno/brush/actions/workflows/devcontainer.yaml) @@ -21,14 +22,18 @@ Available for use and distribution under the [MIT license](LICENSE). In short, quite a lot. Standard and extended control flow, word expansion, most frequently used builtin commands, pipelines, redirection, variables, etc. The plumbing for completion is present, along with support for common cases (e.g. file/dir completion, basic support for programmable completion such as used with git and other tools). -### --Known limitations-- a.k.a. Where you can help! +### Known limitations Where you can help! There's a lot that *is* working, but there are non-trivial gaps in compatibility. Most notably: * **Commands run asynchronously as jobs, job management.** You can run `some-command &` but it's proof-of-concept quality at best. Standard job management via `fg`, `bg`, and `jobs` is not fully implemented. This would be a great area for enthusiastic contributors to dive in :). -* **Honoring `set` options (e.g., `set -e`).** +* **Honoring `set` and `shopt` options (e.g., `set -e`).** The `set` builtin is implemented, as is `set -x` and a few other options, but most of the behaviors aren't there. `set -e`, for example, will execute but its semantics aren't applied across execution. +* **Curly brace expansion.** + Most forms of expansion are implemented; for some reason, we never got around to implementing an expansion that turns `{a,b}` into `a b`. There's even a test for this, but it's marked as a known failing test. +* **Tokenizer and parser edge cases.** + For simplicity and ease of getting going, the tokenizer for `brush` was hand-implemented and the parsers were implemented using [`rust-peg`](https://github.com/kevinmehall/rust-peg). (Also a huge shout out to that project!) There are some edge cases that got tricky and may not be implemented with 100% fidelity (e.g., complex nested parenthetical expressions in arithmetic expressions, further nested inside command substitutions). All of our tests are passing in these areas, but coverage is limited. Augmenting test coverage would be a great starting point. Shell built-ins are a mixed bag. Some are completely and fully implemented (e.g. echo), while some only support their most commonly used options. Some aren't implemented at all. @@ -60,4 +65,4 @@ This is certainly not the first attempt to implement a feature-rich POSIX-ish sh * https://github.com/shellgei/rusty_bash * https://github.com/mvdan/sh -We're sure there are plenty more; we're happy to include links to them as well. \ No newline at end of file +We're sure there are plenty more; we're happy to include links to them as well.