1 | # The Graph CLI (graph-cli)
|
2 |
|
3 | [![npm (scoped)](https://img.shields.io/npm/v/@graphprotocol/graph-cli.svg?color=success)](https://www.npmjs.com/package/@graphprotocol/graph-cli)
|
4 | [![Tests](https://github.com/graphprotocol/graph-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/graphprotocol/graph-cli/actions/workflows/ci.yml)
|
5 |
|
6 | ## The Graph Command Line Interface
|
7 |
|
8 | As of today, the command line interface supports the following commands:
|
9 |
|
10 | - `graph init` — Creates a new subgraph project from an example or an existing contract.
|
11 | - `graph create` — Registers a subgraph name with a Graph Node.
|
12 | - `graph remove` — Unregisters a subgraph name with a Graph Node.
|
13 | - `graph codegen` — Generates AssemblyScript types for smart contract ABIs and the subgraph schema.
|
14 | - `graph build` — Compiles a subgraph to WebAssembly.
|
15 | - `graph deploy` — Deploys a subgraph to a
|
16 | [Graph Node](https://github.com/graphprotocol/graph-node).
|
17 | - `graph auth` — Stores a [Graph Node](https://github.com/graphprotocol/graph-node) access token in
|
18 | the system's keychain.
|
19 | - `graph local` — Runs tests against a [Graph Node](https://github.com/graphprotocol/graph-node)
|
20 | test environment (using Ganache by default).
|
21 | - `graph test` — Downloads and runs the [Matchstick](https://github.com/LimeChain/matchstick) rust
|
22 | binary in order to test a subgraph.
|
23 | - `graph add` - Adds a new datasource to the yaml file and writes the necessary changes to other
|
24 | files - schema.graphql, abi and mapping.
|
25 |
|
26 | ## How It Works
|
27 |
|
28 | The Graph CLI takes a subgraph manifest (defaults to `subgraph.yaml`) with references to:
|
29 |
|
30 | - A GraphQL schema,
|
31 | - Smart contract ABIs, and
|
32 | - Mappings written in AssemblyScript.
|
33 |
|
34 | It compiles the mappings to WebAssembly, builds a ready-to-use version of the subgraph saved to IPFS
|
35 | or a local directory for debugging, and deploys the subgraph to a
|
36 | [Graph Node](https://github.com/graphprotocol/graph-node).
|
37 |
|
38 | ## Installation
|
39 |
|
40 | The Graph CLI can be installed with `npm` or `yarn`:
|
41 |
|
42 | ```sh
|
43 | # NPM
|
44 | npm install -g @graphprotocol/graph-cli
|
45 |
|
46 | # Yarn
|
47 | yarn global add @graphprotocol/graph-cli
|
48 | ```
|
49 |
|
50 | ### On Linux
|
51 |
|
52 | `libsecret` is used for storing access tokens, so you may need to install it before getting started.
|
53 | Use one of the following commands depending on your distribution:
|
54 |
|
55 | - Debian/Ubuntu: `sudo apt-get install libsecret-1-dev`
|
56 | - Red Hat: `sudo yum install libsecret-devel`
|
57 | - Arch Linux: `sudo pacman -S libsecret`
|
58 |
|
59 | ## Getting Started
|
60 |
|
61 | The Graph CLI can be used with a local or self-hosted
|
62 | [Graph Node](https://github.com/graphprotocol/graph-node) or with the
|
63 | [Hosted Service](https://thegraph.com/explorer/). To help you get going, there are
|
64 | [quick start guides](https://thegraph.com/docs/en/developer/quick-start/) available for both.
|
65 |
|
66 | If you are ready to dive into the details of building a subgraph from scratch, there is a
|
67 | [detailed walkthrough](https://thegraph.com/docs/en/developer/create-subgraph-hosted/) for that as
|
68 | well, along with API documentation for the
|
69 | [AssemblyScript API](https://thegraph.com/docs/en/developer/assemblyscript-api/).
|
70 |
|
71 | ## License
|
72 |
|
73 | Copyright © 2018-2019 Graph Protocol, Inc. and contributors.
|
74 |
|
75 | The Graph CLI is dual-licensed under the [MIT license](LICENSE-MIT) and the
|
76 | [Apache License, Version 2.0](LICENSE-APACHE).
|
77 |
|
78 | Unless required by applicable law or agreed to in writing, software distributed under the License is
|
79 | distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressed or
|
80 | implied. See the License for the specific language governing permissions and limitations under the
|
81 | License.
|