mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-16 01:44:03 +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
2.4 KiB
2.4 KiB
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.
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 that will install all of the project
dependencies required to work on v3-engine
.
To use it:
- Install Nix
- 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 withexit
. - Type
echo $IN_NIX_SHELL
to confirm you're in a Nix shell. It should print "impure". - 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 to allow autoloading the Nix dependencies upon entering the project folder.
To use this:
- Install direnv:
- Install the direnv program
- Add the direnv hook to your shell
- Open a new terminal
cp .envrc.local.example .envrc.local
- Run
direnv allow
- Nix should now install project dependencies and put them in your
$PATH
whenever you enter the project folder. - Type
echo $IN_NIX_SHELL
to confirm you're in a Nix shell. It should print "impure". - 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 newBooleanExpressionType
metadata kind