graphql-engine/cli/CONTRIBUTING.md
Rikin Kachhia b0d180efa2
docs: use install manifests from stable branch (#3906)
* update docs install manifests to use stable branch

* change the link to master at some more places

Co-authored-by: Shahidh K Muhammed <muhammedshahid.k@gmail.com>
2020-02-19 17:13:08 +05:30

3.1 KiB

Contributing

Thanks for your interest in Hasura GraphQL Engine CLI.

The CLI is written in Go using the popular package spf13/cobra.

All CLI related issues are labelled as c/cli which stands for component/cli. If you're new to the CLI codebase, you can checkout the good-first-issue label for issues that are fairly easy to implement.

For first-time contributors, we have set aside some time slots for one-on-one pair programming with the team, to get you started quickly. 😄 If you're interested in setting up a chat, please feel free to pick a slot from shahidhk's calendar.

Pre-requisites

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 follow the instructions below to make sure the import paths are correct:

  • Fork the repo on GitHub
  • git clone https://github.com/<your-username>/graphql-engine
  • cd graphql-engine/cli
  • git remote add upstream https://github.com/hasura/graphql-engine
  • git checkout -b <branch-name>
  • make deps
  • Work on the feature/fix
  • If you modify files in assets/, run make assets
  • Add tests and ensure all tests are passing (check Tests section below)
  • Commit, push and submit PR

Development workflow

We suggest using realize for faster dev workflow. The .realize.yaml config is already included in the repo.

  • Install realize
    go get github.com/oxequa/realize
    
  • Start realize
    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.

Tests

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 tests 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 should be empty. The easiest way to do this is to run Postgres and GraphQL Engine using Docker Compose. Once the server is running, you can run the tests by executing the make command:

HASURA_GRAPHQL_TEST_ENDPOINT=http://localhost:8080 VERSION=dev make test

Builds

To build a binary, execute the following command:

# make deps to install all go packages
make build

This will output cross-platform binaries to _output directory.