Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/redox-os/ion

Mirror of https://gitlab.redox-os.org/redox-os/ion
https://github.com/redox-os/ion

Last synced: 3 days ago
JSON representation

Mirror of https://gitlab.redox-os.org/redox-os/ion

Awesome Lists containing this project

README

        

# Introduction

Ion is a modern system shell that features a simple, yet powerful, syntax. It is written entirely
in Rust, which greatly increases the overall quality and security of the shell. It also offers a
level of performance that exceeds that of Dash, when taking advantage of Ion's features. While it
is developed alongside, and primarily for, RedoxOS, it is a fully capable on other \*nix platforms.

# Ion Shell

[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
[![crates.io](https://meritbadge.herokuapp.com/ion-shell)](https://crates.io/crates/ion-shell)
[![Documentation](https://img.shields.io/badge/documentation-blue)](https://doc.redox-os.org/ion-manual)

> Ion is still a WIP, and both its syntax and rules are subject to change over time. It is
> still quite a ways from becoming stabilized, but we are getting very close. Changes to the
> syntax at this time are likely to be minimal.

# Ion Specification

Ion has a RFC process for language proposals. Ion's formal specification is located within the
[rfcs](https://gitlab.redox-os.org/redox-os/ion/tree/rfcs) branch. The RFC process is still in
the early stages of development, so much of the current and future implementation ideas have
yet to be written into the specification.

# Ion Manual

[The Ion manual online](https://doc.redox-os.org/ion-manual)
is generated automatically on each commit via [mdBook](https://github.com/azerupi/mdBook) and hosted on Redox OS's website.

**Building the manual for local reference**

Sources for the manual are located in the `manual` directory.

1. Build the documentation file for the builtins

```sh
make manual
```

2. Then build the rest of the Ion manual via mdbook

```sh
mdbook build manual
```

Or you can build and open it in the your default browser via

```sh
mdbook serve manual --open
```

Or you can build and host the manual on your localhost via

```sh
mdbook serve manual
```

# Ion library example

See the [examples folder](https://gitlab.redox-os.org/redox-os/ion/tree/master/examples) and the [Parallelion project](https://gitlab.redox-os.org/AdminXVII/parallelion)

# Packages

## Pop!\_OS / Ubuntu

The following PPA supports the 18.04 (bionic) and 19.04 (disco) releases. Bionic builds were made using the Pop\_OS PPA's rustc 1.39.0 package.

```
sudo add-apt-repository ppa:mmstick76/ion-shell
```

# Developer set up

Those who are developing software with Rust should install the [Rustup toolchain manager](https://rustup.rs/).
After installing rustup, run `rustup override set 1.56.0` to set your Rust toolchain to the version that Ion is
targeting at the moment. To build for Redox OS, `rustup override set nightly` is required to build the Redox
dependencies.

# Build dependencies

Please ensure that both cargo and rustc 1.56.0 or higher is installed for your system.
Release tarballs have not been made yet due to Ion being incomplete in a few remaining areas.

# Installation

## Installation of Ion shell for one user

```sh
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo install --path=. --force
```

This way the ion executable will be installed into the folder "~/.cargo/bin"

As an alternative you can do it like this

```sh
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release
# Install to path which is included in the $PATH enviromnent variable
DESTDIR=~/.local/bin bash/install.sh
```

## Installation of Ion shell system wide, for all users

```sh
git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release
sudo DESTDIR=/usr/local/bin bash/install.sh
# Optional: Do this if Ion shell shoulb be login shell on your system
sudo make update-shells prefix=/usr
```

# Ion plugins

There are plugins for ion. These plugins are additional aliases and function definitions written in
Ion for Ion. They can be found under this [repository](https://gitlab.redox-os.org/redox-os/ion-plugins).

# Vim/NeoVim Syntax Highlighting Plugin

For vim/nvim users there is an [officially-supported syntax highlighting plugin](https://gitlab.redox-os.org/redox-os/ion-vim).

```vimscript
Plugin 'vmchale/ion-vim'
```

![Vim Syntax Highlighting](.gitlab/vim_syntax.png)

# Emacs Syntax Highlighting Plugin

For emacs users there is a [kindly-supported syntax highlighting plugin](https://github.com/iwahbe/ion-mode).

```emacs
(add-to-list 'load-path (expand-file-name "/path/to/ion-mode"))
(require 'ion-mode)
(autoload 'ion-mode (locate-library "ion-mode") "Ion majore mode" t)
(add-to-list 'auto-mode-alist '("\\.ion\\'" . ion-mode))
(add-to-list 'auto-mode-alist '("/ion/initrc" . ion-mode))
```

![Emacs Syntax Highlighting](.gitlab/emacs_syntax.png)

# Lsp /IDE support

There is a LSP-server for the scripting language of this shell.
You can install the LSP-server via crates.io to get IDE support like error messages for an code editor or IDE which understands the client side of LSP. Link to LSP server on crates.io : https://crates.io/crates/ion_shell_lsp_server .
The source code of the LSP server can be found here: https://gitlab.redox-os.org/redox-os/ion_lsp .