Rfxi / Rfx Interface - User interface and APIs for Rfx.
Rfxi can be used interactively, and can interoperate with standalone apps, editors, and dev tools.
Rfxi provides:
- a CLI and a Webapp
- Server APIs via Popen3, Rest/JSON and Websocket
Note: This code is pre-release! Not at all ready for production use.
- CLI: Options parser
- CLI: Mix-like task introspection on operations and converters
- CLI: Repl
- CLI: Embedded web server
- Web: Restful JSON API
- Web: WebSockets API
- Web: Minimal End-User LiveView pages
- Neovim: Plugin using JSON/REST interface
About Rfxi:
- The CLI is extensible for new Rfx Operations using an introspection technique borrowed from custom Mix Tasks.
- A standalone app can add custom modules to the
Rfx.Ops
namespace. Using runtime introspection they will be integrated into the CLI help menus just like built-in Rfx Operations. - There is a repl built into the CLI.
- The repl uses the same option parser as the CLI.
- The web server can be started from a CLI command (eg
rfx --server
), and can be launched by a parent process (eg Vim, Emacs, VsCode...) - The WebUI provides an API - Restful JSON & socket interfaces - and have Liveviews for lightweight testing and monitoring
- The JSON and socket APIs use the same option parser and return values as the CLI
- Rfx and Sourceror - the foundation libraries for Rfxi
- rfx.nvim - an experimental Neovim plugin that uses Rfxi
- rfx.vscode - an experimental Vscode extension that uses Rfxi
To ask questions:
- use the issue tracker
- use the #refactoring channel on Elixir Slack
Developers welcome!
- Clone this repo
- Install the dependencies
mix deps.get
- Build the escript
mix escript.build
- Run the script
./rfx --help