|
4 | 4 | > external feature contributors, though some documentation contributions may be
|
5 | 5 | > accepted.
|
6 | 6 |
|
| 7 | +## Prerequisites |
| 8 | + |
| 9 | +Rover is written in [Rust]. In order to contribute, you'll need to have |
| 10 | +Rust installed. To install Rust, visit [https://www.rust-lang.org/tools/install]. |
| 11 | + |
| 12 | +Rust has a build tool and package manager called [`cargo`] that you'll use to |
| 13 | +interact with Rover's code. |
| 14 | + |
| 15 | +To build the CLI: |
| 16 | +```bash |
| 17 | +cargo build |
| 18 | +``` |
| 19 | + |
| 20 | +To run the CLI: |
| 21 | +```bash |
| 22 | +cargo run -- <args> |
| 23 | +# e.g. 'cargo run -- help' will run the rover help command |
| 24 | +``` |
| 25 | + |
| 26 | +You can also install Rover to your local PATH from source with cargo by first |
| 27 | +cloning this repository, and then building the CLI: |
| 28 | +```bash |
| 29 | +cargo build |
| 30 | +``` |
| 31 | + |
| 32 | +And then running cargo with `install` argument: |
| 33 | +```bash |
| 34 | +cargo run -- install |
| 35 | +``` |
| 36 | + |
| 37 | +[Rust]: https://www.rust-lang.org/ |
| 38 | +[`cargo`]: https://doc.rust-lang.org/cargo/index.html |
| 39 | +[https://www.rust-lang.org/tools/install]: https://www.rust-lang.org/tools/install |
| 40 | + |
| 41 | +## Project Structure |
| 42 | + |
| 43 | +- `src`: the `rover` CLI |
| 44 | + - `src/bin/rover.rs`: the entry point for the CLI executable |
| 45 | + - `src/command`: logic for the CLI commands |
| 46 | + - `src/command/output.rs`: Enum containing all possible `stdout` options for Rover commands |
| 47 | + - `src/utils`: shared utility functions |
| 48 | + - `src/error`: application-level error handling including suggestions and error codes |
| 49 | + - `src/cli.rs`: Module containing definition for all top-level commands |
| 50 | + - `src/lib.rs`: all the logic used by the CLI |
| 51 | + |
| 52 | +- `crates` |
| 53 | + - `crates/houston`: logic related to configuring rover |
| 54 | + - `crates/robot-panic`: Fork of robot-panic to create helpful panic handlers |
| 55 | + - `crates/rover-client`: logic for querying apollo services |
| 56 | + - `crates/sputnik`: logic for capturing anonymous usage data |
| 57 | + - `crates/timber`: output formatting and logging logic |
| 58 | + |
| 59 | + |
| 60 | +## Documentation |
| 61 | + |
| 62 | +Documentation for using and contributing to rover is built using Gatsby and [Apollo's Docs Theme for Gatsby](https://github.com/apollographql/gatsby-theme-apollo/tree/master/packages/gatsby-theme-apollo-docs). |
| 63 | + |
| 64 | +To contribute to these docs, you can add or edit the markdown & MDX files in the `docs/source` directory. |
| 65 | + |
| 66 | +To build and run the documentation site locally, you'll have to install the relevant packages by doing the following from the root of the `rover` repository: |
| 67 | + |
| 68 | +```sh |
| 69 | +cd docs |
| 70 | +npm i |
| 71 | +npm start |
| 72 | +``` |
| 73 | + |
| 74 | +This will start up a development server with live reload enabled. You can see the docs by opening [localhost:8000](http://localhost:8000) in your browser. |
| 75 | + |
| 76 | +To see how the sidebar is built and how pages are grouped and named, see [this section](https://github.com/apollographql/gatsby-theme-apollo/tree/master/packages/gatsby-theme-apollo-docs#sidebarcategories) of the gatsby-theme-apollo-docs docs. There is also a [creating pages section](https://github.com/apollographql/gatsby-theme-apollo/tree/master/packages/gatsby-theme-apollo-docs#creating-pages) if you're interesed in adding new pages. |
| 77 | +======= |
7 | 78 | For info on how to contribute to Rover, see the [docs](https://go.apollo.dev/r/contributing).
|
8 | 79 |
|
9 | 80 | ## Code of Conduct
|
@@ -46,4 +117,4 @@ course *even if you are not entirely convinced you need to*. Giving other
|
46 | 117 | contributors the benefit of the doubt and having a sincere willingness to admit
|
47 | 118 | that you *might* be wrong is critical for any successful open collaboration.
|
48 | 119 |
|
49 |
| -Don't be a bad actor. |
| 120 | +Don't be a bad actor. |
0 commit comments