mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 09:22:43 +03:00
39c45de522
<!-- Thank you for submitting this PR! :) --> ## Description We'd like to be able to test new WIP experimental features. This adds a `UNSTABLE_FEATURES` env var / command line arg that can be passed a comma separated list of names. Currently we accept `UNSTABLE_FEATURES=enable-boolean-expression-types` but in future users could pass `UNSTABLE_FEATURES=some-fancy-feature,other-feature,great`. <!-- Questions to consider answering: 1. What user-facing changes are being made? 2. What are issues related to this PR? (Consider adding `(close #<issue-no>)` to the PR title) 3. What is the conceptual design behind this PR? 4. How can this PR be tested/verified? 5. Does the PR have limitations? 6. Does the PR introduce breaking changes? --> ## Changelog - Add a changelog entry (in the "Changelog entry" section below) if the changes in this PR have any user-facing impact. See [changelog guide](https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide). - If no changelog is required ignore/remove this section and add a `no-changelog-required` label to the PR. ### Product _(Select all products this will be available in)_ - [x] community-edition - [x] cloud <!-- product : end : DO NOT REMOVE --> ### Type <!-- See changelog structure: https://github.com/hasura/graphql-engine-mono/wiki/Changelog-Guide#structure-of-our-changelog --> _(Select only one. In case of multiple, choose the most appropriate)_ - [ ] highlight - [x] enhancement - [ ] bugfix - [ ] behaviour-change - [ ] performance-enhancement - [ ] security-fix <!-- type : end : DO NOT REMOVE --> ### Changelog entry <!-- - Add a user understandable changelog entry - Include all details needed to understand the change. Try including links to docs or issues if relevant - For Highlights start with a H4 heading (#### <entry title>) - Get the changelog entry reviewed by your team --> Add `UNSTABLE_FEATURES` environment variable <!-- changelog-entry : end : DO NOT REMOVE --> <!-- changelog : end : DO NOT REMOVE --> V3_GIT_ORIGIN_REV_ID: 3562c1341d4ea3a512626110dbd2b055425c1d60
81 lines
2.4 KiB
Markdown
81 lines
2.4 KiB
Markdown
# V3 Contributing Guide
|
|
|
|
## Getting Started
|
|
|
|
### Using Docker
|
|
|
|
Start a development container (which includes NDC agents for testing):
|
|
|
|
```
|
|
docker compose run --build --rm dev_setup bash
|
|
```
|
|
|
|
### Without Docker
|
|
|
|
You will need to install some packages:
|
|
|
|
- The Rust compiler
|
|
- `protobuf-compiler`
|
|
|
|
For development, you may need to install some additional tools such as
|
|
`nextest`. See the [Dockerfile](Dockerfile).
|
|
|
|
### Building the source
|
|
|
|
If the dependencies are correctly installed as above, you should now be able to
|
|
run
|
|
|
|
```
|
|
cargo build
|
|
```
|
|
|
|
From here, you can follow the instructions in <README.md> to set up a working
|
|
server.
|
|
|
|
## Installing project dependencies with Nix
|
|
|
|
We maintain a [Nix Flake](flake.nix) that will install all of the project
|
|
dependencies required to work on `v3-engine`.
|
|
|
|
To use it:
|
|
|
|
1. [Install Nix](https://github.com/DeterminateSystems/nix-installer)
|
|
2. Run `nix develop` in the project root. This starts a new shell which exposes
|
|
the Nix project dependencies on your `$PATH`, and can be exited with `exit`.
|
|
3. Type `echo $IN_NIX_SHELL` to confirm you're in a Nix shell. It should print
|
|
"impure".
|
|
4. Run `which rustc` to verify that the Rust compiler is being provided by Nix.
|
|
You should see a path starting with `/nix/store/` and ending in `/bin/rustc`.
|
|
|
|
We also supply configuration for [direnv](https://direnv.net/) to allow
|
|
autoloading the Nix dependencies upon entering the project folder.
|
|
|
|
To use this:
|
|
|
|
1. Install direnv:
|
|
1. [Install the direnv program](https://direnv.net/docs/installation.html)
|
|
1. [Add the direnv hook to your shell](https://direnv.net/docs/hook.html)
|
|
1. Open a new terminal
|
|
1. `cp .envrc.local.example .envrc.local`
|
|
1. Run `direnv allow`
|
|
1. Nix should now install project dependencies and put them in your `$PATH`
|
|
whenever you enter the project folder.
|
|
1. Type `echo $IN_NIX_SHELL` to confirm you're in a Nix shell. It should print
|
|
"impure".
|
|
1. Run `which rustc` to verify that the Rust compiler is being provided by Nix.
|
|
You should see a path starting with `/nix/store/` and ending in `/bin/rustc`.
|
|
|
|
## Unstable features
|
|
|
|
When starting the engine, you can use the `UNSTABLE_FEATURES` env var to enable
|
|
work in progress features. Currently available:
|
|
|
|
- `enable-boolean-expression-types` - allow the new `BooleanExpressionType`
|
|
metadata kind
|
|
|
|
## Additional Reading
|
|
|
|
- [Architecture](docs/architecture.md)
|
|
- [Roles and Annotations](docs/roles-and-annotations.md)
|
|
- [Errors](docs/errors.md)
|