starship/README.md

136 lines
6.9 KiB
Markdown
Raw Normal View History

<h1 align="center">
<br>
<img width="400" src="media/logo.png" alt="Starship Cross-shell prompt">
<p align="center">
<a href="https://dev.azure.com/starship-control/starship/_build"><img src="https://badgen.net/azure-pipelines/starship-control/starship/Starship%20Test%20Suite" alt="Azure Pipelines Build Status"></a>
<a href="#contributors"><img src="https://badgen.net/badge/all%20contributors/7/orange" alt="All Contributors"></a>
<a href="https://discord.gg/8Jzqu3T"><img src="https://badgen.net/badge/chat/on%20discord/7289da" alt="Chat on Discord"></a>
</p>
<br>
</h1>
2019-04-02 03:23:03 +00:00
2019-04-13 04:45:33 +00:00
> ⚠️ This is very much work in progress, so please don't try to use it just yet!
Starship is a Rust port of the minimalistic, powerful, and extremely customizable prompt [Spaceship ZSH](https://github.com/denysdovhan/spaceship-prompt).
2019-04-13 16:51:12 +00:00
## Development plans
The project is beginning as a port of Spaceship ZSH, but will be improved in areas where Spaceship ZSH was previously limited:
- Speed
- Concurrency of segment logic execution
2019-04-13 16:51:12 +00:00
- Memoization of expensive operations
- Safety and error handling
- Testability of code
- Configuration
- Cross-shell support with JSON or TOML config files
2019-04-14 05:15:48 +00:00
We will _not_ be aiming to achieve full parity with Spaceship ZSH as a result, so I am very open to discussing and reevaluating new solutions and ideas for the prompt.
2019-04-13 16:51:12 +00:00
I'm very new to Rust, so any help is appreciated when it comes to improving development patterns, writing idiomatic Rust, performance, safety, etc. 😄
2019-04-13 04:45:33 +00:00
### Prompt segments
- [x] Prompt character turns red if the last command exits with non-zero code.
- [x] Current Node.js version(`⬢`).
- [x] Current Rust version (`🦀`).
2019-04-25 15:06:18 +00:00
- [x] Current Python version (`🐍`).
2019-05-12 03:58:45 +00:00
- [x] Current Go version (`🐹`).
- [x] Package version of package in current directory (`📦`).
2019-05-22 16:29:39 +00:00
- [x] Current battery level and status
2019-05-14 04:43:11 +00:00
- [x] Current Git branch and rich repo status:
- `=` — conflicting changes
- `⇡` — ahead of remote branch
- `⇣` — behind of remote branch
- `⇕` — diverged changes
- `?` — untracked changes
- `$` — stashed changes
- `!` — modified files
- `+` — added files
- `»` — renamed files
- `✘` — deleted files
2019-04-13 04:45:33 +00:00
- [ ] Indicator for jobs in the background (`✦`).
- [ ] Execution time of the last command if it exceeds the set threshold.
2019-04-13 16:51:12 +00:00
### Other features
- [x] `starship.toml` configuration
2019-04-13 16:51:12 +00:00
- [ ] Custom sections given commands or binaries
- [ ] Self-updating
2019-04-13 04:45:33 +00:00
### Shell support
- [x] Fish shell
2019-04-17 20:48:44 +00:00
- [x] Z Shell
2019-04-13 04:45:33 +00:00
- [ ] Bash
2019-04-13 04:33:50 +00:00
2019-04-13 16:51:12 +00:00
### Test strategy
- [ ] Per-segment benchmarking
- [x] Per-segment unit + integration tests
- [x] Shell + OS matrix acceptance tests
2019-04-13 16:51:12 +00:00
2019-04-13 04:33:50 +00:00
## Setup
### Prerequisites
- Rust v1.33 or higher
### Getting Started
1. `cd` to the root of the **starship** repo
1. Install the **starship** binary:
```bash
cargo install --path .
```
1. Navigate to the adapters directory
```bash
cd adapters
```
#### Fish
2019-04-13 04:33:50 +00:00
1. Install the fish shell prompt with fisher:
```bash
fisher $PWD
```
#### oh-my-zsh
1. Install the zsh theme:
```bash
cp starship.zsh-theme ~/.oh-my-zsh/themes
```
1. In `~/.zshrc`, find the line with `ZSH_THEME=` and set it to
```bash
ZSH_THEME="starship"
```
2019-05-14 04:43:11 +00:00
## Contributing
To test locally run the below command:
```bash
cargo run -- $status
2019-04-25 15:06:18 +00:00
```
## Contributors
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore -->
<table><tr><td align="center"><a href="https://twitter.com/matchai"><img src="https://avatars0.githubusercontent.com/u/4658208?v=4" width="100px;" alt="Matan Kushner"/><br /><sub><b>Matan Kushner</b></sub></a><br /><a href="https://github.com/starship/starship/commits?author=matchai" title="Code">💻</a> <a href="#design-matchai" title="Design">🎨</a> <a href="#ideas-matchai" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-matchai" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-matchai" title="Maintenance">🚧</a> <a href="#review-matchai" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/starship/starship/commits?author=matchai" title="Tests">⚠️</a></td><td align="center"><a href="https://github.com/johnletey"><img src="https://avatars0.githubusercontent.com/u/30328854?v=4" width="100px;" alt="John Letey"/><br /><sub><b>John Letey</b></sub></a><br /><a href="https://github.com/starship/starship/commits?author=johnletey" title="Code">💻</a> <a href="#ideas-johnletey" title="Ideas, Planning, & Feedback">🤔</a> <a href="#review-johnletey" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/starship/starship/commits?author=johnletey" title="Tests">⚠️</a></td><td align="center"><a href="http://timmulqueen.com"><img src="https://avatars1.githubusercontent.com/u/6132021?v=4" width="100px;" alt="Tim Mulqueen"/><br /><sub><b>Tim Mulqueen</b></sub></a><br /><a href="https://github.com/starship/starship/commits?author=Multimo" title="Code">💻</a> <a href="#ideas-Multimo" title="Ideas, Planning, & Feedback">🤔</a> <a href="#review-Multimo" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/starship/starship/commits?author=Multimo" title="Tests">⚠️</a></td><td align="center"><a href="https://github.com/sirMerr"><img src="https://avatars2.githubusercontent.com/u/11183523?v=4" width="100px;" alt="Tiffany Le-Nguyen"/><br /><sub><b>Tiffany Le-Nguyen</b></sub></a><br /><a href="#ideas-sirMerr" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-sirMerr" title="Maintenance">🚧</a> <a href="#review-sirMerr" title="Reviewed Pull Requests">👀</a></td><td align="center"><a href="https://about.snuggi.es"><img src="https://avatars0.githubusercontent.com/u/26250962?v=4" width="100px;" alt="Snuggle"/><br /><sub><b>Snuggle</b></sub></a><br /><a href="#design-Snuggle" title="Design">🎨</a> <a href="#ideas-Snuggle" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-Snuggle" title="Maintenance">🚧</a> <a href="#review-Snuggle" title="Reviewed Pull Requests">👀</a></td><td align="center"><a href="https://github.com/mehcode"><img src="https://avatars1.githubusercontent.com/u/753919?v=4" width="100px;" alt="Ryan Leckey"/><br /><sub><b>Ryan Leckey</b></sub></a><br /><a href="#review-mehcode" title="Reviewed Pull Requests">👀</a></td><td align="center"><a href="https://github.com/youssefhabri"><img src="https://avatars3.githubusercontent.com/u/1578005?v=4" width="100px;" alt="Youssef Habri"/><br /><sub><b>Youssef Habri</b></sub></a><br /><a href="https://github.com/starship/starship/commits?author=youssefhabri" title="Code">💻</a></td></tr></table>
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!