| # Fuchsia Shell |
| |
| ## Overview |
| |
| The goal of the Fuchsia Shell project is to build a shell experience for |
| Fuchsia developers that is Fuchsia-first - that is, one that allows the user |
| to interact with a system running Fuchsia in a way that feels native to |
| Fuchsia, rather than being ported forward from some other system. The shell |
| is designed to allow you to manipulate FIDL interfaces, namespaces, Zircon |
| objects, and other core Fuchsia concepts. |
| |
| ## Getting started |
| |
| To get started with the shell, simply add `"//src/developer/shell:cliff"` to |
| the packages you build. You can then invoke `cliff` from the `dash` command |
| line. As the shell evolves, it will eventually replace `dash`, and you will |
| not have to take the extra step of adding it to your build. |
| |
| ## Shell Language |
| |
| ### Variable declaration |
| |
| You can declare a variable with `var` (meaning it is mutable), or `const` |
| (meaning it is immutable). Variables are declared with an initial value: |
| |
| ``` |
| var a = 1 |
| const b = 2 |
| ``` |
| |
| ### Integers |
| |
| Integers are arbitrary length two's complement integers, although our |
| implementation currently limits users to 64-bit signed two's complement. |
| Integer literals can be sequences of numbers (e.g., `12345`), or can be |
| separated into groups of 3 by the `_` character (e.g., `1_001` or |
| `123_456`). |
| |
| ## Testing |
| |
| Changes to the shell can be exercised via the following test components: |
| |
| | Directory | Test Name | |
| |-------------|-------------------------| |
| | parser | shell-parser-unittests | |
| | console | shell-console-unittests | |
| | josh | josh-tests | |
| | mirror | shell-mirror-tests | |
| | interpreter | shell-interpreter-tests | |
| |
| For example, this will test the parser: |
| |
| ``` |
| fx test shell-parser-unittests |
| ``` |