2018-06-28 09:05:34 +03:00
|
|
|
# Contributing
|
2018-06-28 08:40:18 +03:00
|
|
|
|
2018-10-11 10:19:10 +03:00
|
|
|
Thanks for your interest in Hasura GraphQL Engine CLI.
|
2018-07-11 07:57:03 +03:00
|
|
|
|
|
|
|
## Pre-requisites
|
|
|
|
|
|
|
|
- [Go 1.10](https://golang.org/doc/install)
|
|
|
|
- [GNU Make](https://www.gnu.org/software/make/)
|
|
|
|
|
|
|
|
|
2018-06-28 08:40:18 +03:00
|
|
|
You can follow your existing Golang workflow to fork, work on a branch and
|
|
|
|
submit PR. If you're new to forking and working on Golang repositories, please
|
2018-07-11 07:57:03 +03:00
|
|
|
follow the instructions below to make sure the import paths are correct:
|
2018-06-28 08:40:18 +03:00
|
|
|
|
2018-07-11 07:57:03 +03:00
|
|
|
- Fork the repo on GitHub
|
2018-06-28 08:40:18 +03:00
|
|
|
- `mkdir -p $GOPATH/src/github.com/hasura`
|
|
|
|
- `cd $GOPATH/src/github.com/hasura`
|
|
|
|
- `git clone https://github.com/<your-username>/graphql-engine`
|
|
|
|
- `cd graphql-engine`
|
2018-06-28 09:05:34 +03:00
|
|
|
- `git remote add upstream https://github.com/hasura/graphql-engine`
|
2018-06-28 08:40:18 +03:00
|
|
|
- `git checkout -b <branch-name>`
|
2018-07-11 07:57:03 +03:00
|
|
|
- `make deps`
|
2018-06-28 08:40:18 +03:00
|
|
|
- Work on the feature/fix
|
2018-07-11 07:57:03 +03:00
|
|
|
- If you modify files in `assets/`, run `make assets`
|
2018-07-17 16:02:33 +03:00
|
|
|
- Add tests and ensure all tests are passing (check [Tests](#tests) section below)
|
2018-06-28 08:40:18 +03:00
|
|
|
- Commit, push and submit PR
|
2018-06-28 09:05:34 +03:00
|
|
|
|
|
|
|
## Development workflow
|
|
|
|
|
|
|
|
We suggest using [realize](https://github.com/oxequa/realize) for faster dev
|
2018-07-03 12:24:46 +03:00
|
|
|
workflow. The `.realize.yaml` config is already included in the repo.
|
2018-06-28 09:05:34 +03:00
|
|
|
|
|
|
|
- Install realize
|
|
|
|
```bash
|
|
|
|
go get github.com/oxequa/realize
|
|
|
|
```
|
|
|
|
- Start realize
|
|
|
|
```bash
|
|
|
|
realize start
|
|
|
|
```
|
|
|
|
|
|
|
|
`realize` watches the directory for changes and rebuilds the cli whenever a new
|
|
|
|
change happens. The cli is installed to `$GOPATH/bin/hasura`, which should
|
|
|
|
already be in your `PATH`. The config is located at `.realize/realize.yaml`.
|
2018-07-11 07:57:03 +03:00
|
|
|
|
|
|
|
## Tests
|
|
|
|
|
2018-09-13 12:33:13 +03:00
|
|
|
When you're adding a new feature, it is encouraged to add integration tests
|
|
|
|
(unit tests also if possible) for the functions/api. You should run all the test
|
|
|
|
and make sure everything passes before submitting the PR.
|
|
|
|
|
|
|
|
The tests expect a GraphQL Engine server instance to be running. You can point
|
|
|
|
the tests to any GraphQL Engine server but please note that **the database
|
2018-10-11 10:19:10 +03:00
|
|
|
should be empty**. The easiest way to do this is to run Postgres and GraphQL
|
2018-09-13 12:33:13 +03:00
|
|
|
Engine using [Docker
|
|
|
|
Compose](https://github.com/hasura/graphql-engine/tree/master/install-manifests).
|
|
|
|
Once the server is running, you can run the tests by executing the make command:
|
2018-07-11 07:57:03 +03:00
|
|
|
|
|
|
|
```bash
|
2018-07-17 16:02:33 +03:00
|
|
|
HASURA_GRAPHQL_TEST_ENDPOINT=http://localhost:8080 VERSION=dev make test
|
2018-07-11 07:57:03 +03:00
|
|
|
```
|
|
|
|
|
|
|
|
## Builds
|
|
|
|
|
|
|
|
To build a binary, execute the following command:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
# make deps to install all go packages
|
|
|
|
make build
|
|
|
|
```
|
|
|
|
|
2018-07-17 16:02:33 +03:00
|
|
|
This will output cross-platform binaries to `_output` directory.
|