cli

module
v0.27.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 18, 2023 License: Apache-2.0

README

Ignite CLI

Ignite CLI

Ignite CLI is the all-in-one platform to build, launch, and maintain any crypto application on a sovereign and secured blockchain. It is a developer-friendly interface to the Cosmos SDK, the world's most widely-used blockchain application framework. Ignite CLI generates boilerplate code for you, so you can focus on writing business logic.

Quick start

Open Ignite CLI in your web browser (or open nightly version), or install the latest release.

To create and start a blockchain:

ignite scaffold chain mars

cd mars

ignite chain serve

Documentation

To learn how to use Ignite CLI, check out the Ignite CLI docs. To learn more about how to build blockchain apps with Ignite CLI, see the Ignite CLI Developer Tutorials.

To install Ignite CLI locally on GNU, Linux, or macOS, see Install Ignite CLI.

To learn more about building a JavaScript frontend for your Cosmos SDK blockchain, see ignite/web.

Questions

For questions and support, join the official Ignite Discord server. The issue list in this repo is exclusively for bug reports and feature requests.

Cosmos SDK compatibility

Blockchains created with Ignite CLI use the Cosmos SDK framework. To ensure the best possible experience, use the version of Ignite CLI that corresponds to the version of Cosmos SDK that your blockchain is built with. Unless noted otherwise, a row refers to a minor version and all associated patch versions.

Ignite CLI Cosmos SDK IBC Notes
v0.27.0 v0.47.3 v7.1.0
v0.26.0 v0.46.7 v6.1.0
v0.25.2 v0.46.6 v5.1.0 Bump Tendermint version to v0.34.24
v0.25.1 v0.46.3 v5.0.0 Includes Dragonberry security fix
v0.24.0 v0.46.0 v5.0.0 This version is deprecated due to a security fix in v0.25.0
v0.23.0 v0.45.5 v3.0.1
v0.21.1 v0.45.4 v2.0.3 Supports Cosmos SDK v0.46.0-alpha1 and above
v0.21.0 v0.45.4 v2.0.3
v0.20.0 v0.45.3 v2.0.3
v0.19 v0.44 v1.2.2
v0.18 v0.44 v1.2.2 ignite chain serve works with v0.44.x chains
v0.17 v0.42 Same with Cosmos SDK

To upgrade your blockchain to the newer version of Cosmos SDK, see the Migration guide.

Plugin system

Ignite CLI commands can be extended using plugins. A plugin is a program that uses github.com/hashicorp/go-plugin to communicate with the ignite binary.

Use a plugin

Plugins must be declared in the config.yml file, using the following syntax:

plugins:
  // path can be a repository or a local path
  // the directory must contain go code under a main package.
  // For repositories you can specify a suffix @branch or @tag to target a
  // specific git reference.
  - path: github.com/org/repo/my-plugin
    // Additional parameters can be passed to the plugin
    with:
      key: value

Once declared, the next time the ignite binary will be executed under this configuration, it will fetch, build and run the plugin. As a result, more commands should be available in the list of the ignite commands.

ignite plugin command allows to list the plugins and their status, and to update a plugin if you need to get the latest version.

Make a plugin

A plugin must implement plugin.Interface.

The easiest way to make a plugin is to use the ignite plugin scaffold command. For example:

$ cd /home/user/src
$ ignite plugin scaffold github.com/foo/bar

It will create a folder bar under /home/user/src and generate predefined go.mod and main.go. The code contains everything required to connect to the ignite binary via hashicorp/go-plugin. What need to be adapted is the implementation of the plugin.Interface (Commands and Execute methods).

To test your plugin, you only need to declare it under a chain config, for instance:

plugins:
  - path: /home/user/src/bar

Then run ignite, the plugin will compile and should be listed among the ignite commands. Each time ignite is executed, the plugin is recompiled if the files have changed since the last compilation. This allows fast and easy plugin development, you only care about code and ignite handles the compilation.

Contributing

We welcome contributions from everyone. The main branch contains the development version of the code. You can create a branch from main and create a pull request, or maintain your own fork and submit a cross-repository pull request.

Our Ignite CLI bounty program provides incentives for your participation and pays rewards. Track new, in-progress, and completed bounties on the Bounty board in GitHub.

Important Before you start implementing a new Ignite CLI feature, the first step is to create an issue on GitHub that describes the proposed changes.

If you're not sure where to start, check out contributing.md for our guidelines and policies for how we develop Ignite CLI. Thank you to everyone who has contributed to Ignite CLI!

Community

Ignite CLI is a free and open source product maintained by Ignite. Here's where you can find us. Stay in touch.

Directories

Path Synopsis
ignite
cmd
internal/tools/gen-cli-docs
this tool generates Ignite CLI docs to be placed in the docs/cli dir and deployed on docs.ignite.com
this tool generates Ignite CLI docs to be placed in the docs/cli dir and deployed on docs.ignite.com
pkg/chaincmd/runner
Package chaincmdrunner provides high level access to a blockchain's commands.
Package chaincmdrunner provides high level access to a blockchain's commands.
pkg/cliui/cliquiz
Package cliquiz is a tool to collect answers from the users on cli.
Package cliquiz is a tool to collect answers from the users on cli.
pkg/cliui/lineprefixer
Package lineprefixer is a helpers to add prefixes to new lines.
Package lineprefixer is a helpers to add prefixes to new lines.
pkg/cliui/prefixgen
Package prefixgen is a prefix generation helper for log messages and any other kind.
Package prefixgen is a prefix generation helper for log messages and any other kind.
pkg/cmdrunner/exec
Package exec provides easy access to command execution for basic uses.
Package exec provides easy access to command execution for basic uses.
pkg/confile
Package confile is helper to load and overwrite configuration files.
Package confile is helper to load and overwrite configuration files.
pkg/cosmosanalysis
Package cosmosanalysis provides a toolset for statically analysing Cosmos SDK's source code and blockchain source codes based on the Cosmos SDK
Package cosmosanalysis provides a toolset for statically analysing Cosmos SDK's source code and blockchain source codes based on the Cosmos SDK
pkg/cosmosclient
Package cosmosclient provides a standalone client to connect to Cosmos SDK chains.
Package cosmosclient provides a standalone client to connect to Cosmos SDK chains.
pkg/cosmosfaucet
Package cosmosfaucet is a faucet to request tokens for sdk accounts.
Package cosmosfaucet is a faucet to request tokens for sdk accounts.
pkg/ctxreader
Package ctxreader brings context.Context to io.Reader
Package ctxreader brings context.Context to io.Reader
pkg/events
Package events provides functionalities for packages to log their states as events for others to consume and display to end users in meaningful ways.
Package events provides functionalities for packages to log their states as events for others to consume and display to end users in meaningful ways.
pkg/gacli
Package gacli is a client for Google Analytics to send data points for hint-type=event.
Package gacli is a client for Google Analytics to send data points for hint-type=event.
pkg/goanalysis
Package goanalysis provides a toolset for statically analysing Go applications
Package goanalysis provides a toolset for statically analysing Go applications
pkg/goenv
Package goenv defines env variables known by Go and some utilities around it.
Package goenv defines env variables known by Go and some utilities around it.
pkg/gomodulepath
Package gomodulepath implements functions for the manipulation of Go module paths.
Package gomodulepath implements functions for the manipulation of Go module paths.
pkg/httpstatuschecker
Package httpstatuschecker is a tool check health of http pages.
Package httpstatuschecker is a tool check health of http pages.
pkg/multiformatname
Package multiformatname provides names automatically converted into multiple naming convention
Package multiformatname provides names automatically converted into multiple naming convention
pkg/nodetime
Package nodetime provides a single, and standalone NodeJS runtime executable that contains several NodeJS CLI programs bundled inside where those are reachable via subcommands.
Package nodetime provides a single, and standalone NodeJS runtime executable that contains several NodeJS CLI programs bundled inside where those are reachable via subcommands.
pkg/nodetime/programs/sta
Package sta provides access to swagger-typescript-api CLI.
Package sta provides access to swagger-typescript-api CLI.
pkg/nodetime/programs/ts-proto
Package tsproto provides access to protoc-gen-ts_proto protoc plugin.
Package tsproto provides access to protoc-gen-ts_proto protoc plugin.
pkg/protoanalysis
Package protoanalysis provides a toolset for analyzing proto files and packages.
Package protoanalysis provides a toolset for analyzing proto files and packages.
pkg/protoanalysis/protoutil
Package protoutil wraps proto structs to allow easier creation, protobuf lang is small enough to easily allow this.
Package protoutil wraps proto structs to allow easier creation, protobuf lang is small enough to easily allow this.
pkg/protoc
Package protoc provides high level access to protoc command.
Package protoc provides high level access to protoc command.
pkg/xfilepath
Package xfilepath defines functions to define path retrievers that support error handling
Package xfilepath defines functions to define path retrievers that support error handling
services/plugin
Package plugin implements ignite plugin management.
Package plugin implements ignite plugin management.
services/scaffolder
Package scaffolder initializes Ignite CLI apps and modifies existing ones to add more features in a later time.
Package scaffolder initializes Ignite CLI apps and modifies existing ones to add more features in a later time.
templates/field
Package field provides methods to parse a field provided in a command with the format name:type
Package field provides methods to parse a field provided in a command with the format name:type

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL