cf0eee1fa3
Gives CommandProviders a `complete(query, {ctx})` method where they can provide completed command names, and then make use of this in CommandCompleter. Supported CommandProvider sources: - Shell built-ins (was supported previously) - PATH executables (when running under Node) - Puter app names (when running in Puter) Script filenames are not yet supported. |
||
---|---|---|
.. | ||
assets | ||
config | ||
doc | ||
packages | ||
src | ||
test | ||
tools | ||
.gitignore | ||
LICENSE | ||
notalicense-license-checker-config.json | ||
package-lock.json | ||
package.json | ||
README.md | ||
rollup.config.js | ||
run.json5 | ||
test.js |
Phoenix
Puter's pure-javascript shell
phoenix
is a pure-javascript shell built for puter.com.
Following the spirit of open-source initiatives we've seen like
SerenityOS,
we've built much of the shell's functionality from scratch.
Some interesting portions of this shell include:
- A shell parser which produces a Concrete-Syntax-Tree
- Pipeline constructs built on top of the Streams API
- Platform support for Puter
The shell is a work in progress. The following improvements are considered in-scope:
- Anything specified in POSIX.1-2017 Chapter 2
- UX improvements over traditional shells
examples include: readline syntax highlighting, hex view for binary streams
- Platform support, so
phoenix
can run in more environments
Running Phoenix
In a Browser
You can use the terminal on Puter, including self-hosted installations.
Running in Node
Under node.js Phoenix acts as a shell for your operating system.
This is a work-in-progress and lots of things are not working
yet. If you'd like to try it out you can run src/main_cli.js
.
Check this issue
for updated information on our progress.
Testing
You can find our tests in the test/ directory. Testing is done with mocha. Make sure it's installed, then run:
npm test
What's on the Roadmap?
We're looking to continue improving the shell and broaden its usefulness. Here are a few ideas we have for the future:
- local machine platform support
See this issue
- further support for the POSIX Command Language
Check our list of missing features