├── .dockerignore
├── .firebaserc
├── .gitattributes
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── bug-report.md
│ ├── enhancement.md
│ ├── feature-request.md
│ ├── meta.md
│ └── release-tracker.md
├── PULL_REQUEST_TEMPLATE
│ └── pull_request_template.md
├── codecov.yml
├── dependabot.yml
├── labeler.yml
├── labels.json
├── mergify.yml
└── workflows
│ ├── auto-author-assign.yml
│ ├── cl-enforcer.yml
│ ├── docs-deploy-preview.yml
│ ├── docs-deploy.yml
│ ├── gen-docs-cli.yml
│ ├── gen-docs-config.yml
│ ├── gen-docs-migration.yml
│ ├── gen-docs-version.yml
│ ├── gh-cleanup-cache.yml
│ ├── go-formatting.yml
│ ├── janitor.yml
│ ├── labeler.yml
│ ├── link-checker-config.json
│ ├── link-checker.yml
│ ├── proto-checker.yml
│ ├── release-binary.yml
│ ├── release-docker.yml
│ ├── release-homebrew.yml
│ ├── release-nightly.yml
│ ├── release-snapcraft.yml
│ ├── stats.yaml
│ ├── test-cov.yml
│ ├── test-integration.yml
│ ├── test-lint.yml
│ ├── test-semantic.yml
│ └── test.yml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── Dockerfile
├── LICENSE
├── Makefile
├── actions
├── cli
│ ├── Dockerfile
│ ├── action.yml
│ └── readme.md
└── release
│ └── vars
│ └── action.yml
├── assets
└── ignite-cli.png
├── buf.yaml
├── changelog.md
├── code_of_conduct.md
├── contributing.md
├── docs
├── .gitignore
├── babel.config.js
├── docs.go
├── docs
│ ├── 01-welcome
│ │ ├── 01-index.md
│ │ ├── 02-install.md
│ │ └── _category_.json
│ ├── 02-guide
│ │ ├── 02-introduction.md
│ │ ├── 03-hello-world.md
│ │ ├── 04-ibc.md
│ │ ├── 05-debug.md
│ │ ├── 06-docker.md
│ │ ├── 07-simapp.md
│ │ ├── 08-state.md
│ │ ├── _category_.json
│ │ └── images
│ │ │ └── packet_sendpost.png
│ ├── 03-CLI-Commands
│ │ ├── 01-cli-commands.md
│ │ └── _category_.json
│ ├── 04-clients
│ │ ├── 01-go-client.md
│ │ ├── 02-typescript.md
│ │ ├── 03-vue.md
│ │ ├── 04-react.md
│ │ └── _category_.json
│ ├── 05-contributing
│ │ ├── 01-docs.md
│ │ └── _category_.json
│ ├── 06-migration
│ │ ├── _category_.json
│ │ ├── readme.md
│ │ ├── v0.18.md
│ │ ├── v0.19.2.md
│ │ ├── v0.20.0.md
│ │ ├── v0.22.0.md
│ │ ├── v0.24.0.md
│ │ ├── v0.25.0.md
│ │ ├── v0.25.1.md
│ │ ├── v0.26.0.md
│ │ ├── v0.27.1.md
│ │ ├── v28.0.0.md
│ │ └── v29.0.0.md
│ ├── 07-packages
│ │ ├── _category_.json
│ │ └── cosmostxcollector.md
│ ├── 08-configuration
│ │ ├── 01-config.md
│ │ ├── 02-config_example.md
│ │ └── _category_.json
│ └── apps
│ │ ├── 01-using-apps.md
│ │ ├── 02-developing-apps.md
│ │ └── _category_.json
├── docusaurus.config.js
├── package.json
├── readme.md
├── sidebars.js
├── src
│ ├── components
│ │ └── ProjectsTable.js
│ ├── css
│ │ ├── base.css
│ │ ├── custom.css
│ │ └── fonts.css
│ └── pages
│ │ ├── index.js
│ │ └── index.module.css
├── static
│ ├── .nojekyll
│ ├── fonts
│ │ ├── inter
│ │ │ ├── Inter-Black.woff
│ │ │ ├── Inter-Black.woff2
│ │ │ ├── Inter-BlackItalic.woff
│ │ │ ├── Inter-BlackItalic.woff2
│ │ │ ├── Inter-Bold.woff
│ │ │ ├── Inter-Bold.woff2
│ │ │ ├── Inter-BoldItalic.woff
│ │ │ ├── Inter-BoldItalic.woff2
│ │ │ ├── Inter-ExtraBold.woff
│ │ │ ├── Inter-ExtraBold.woff2
│ │ │ ├── Inter-ExtraBoldItalic.woff
│ │ │ ├── Inter-ExtraBoldItalic.woff2
│ │ │ ├── Inter-ExtraLight.woff
│ │ │ ├── Inter-ExtraLight.woff2
│ │ │ ├── Inter-ExtraLightItalic.woff
│ │ │ ├── Inter-ExtraLightItalic.woff2
│ │ │ ├── Inter-Italic.woff
│ │ │ ├── Inter-Italic.woff2
│ │ │ ├── Inter-Light.woff
│ │ │ ├── Inter-Light.woff2
│ │ │ ├── Inter-LightItalic.woff
│ │ │ ├── Inter-LightItalic.woff2
│ │ │ ├── Inter-Medium.woff
│ │ │ ├── Inter-Medium.woff2
│ │ │ ├── Inter-MediumItalic.woff
│ │ │ ├── Inter-MediumItalic.woff2
│ │ │ ├── Inter-Regular.woff
│ │ │ ├── Inter-Regular.woff2
│ │ │ ├── Inter-SemiBold.woff
│ │ │ ├── Inter-SemiBold.woff2
│ │ │ ├── Inter-SemiBoldItalic.woff
│ │ │ ├── Inter-SemiBoldItalic.woff2
│ │ │ ├── Inter-Thin.woff
│ │ │ ├── Inter-Thin.woff2
│ │ │ ├── Inter-ThinItalic.woff
│ │ │ ├── Inter-ThinItalic.woff2
│ │ │ ├── Inter-italic.var.woff2
│ │ │ └── Inter-roman.var.woff2
│ │ ├── intervar
│ │ │ └── Inter.var.woff2
│ │ ├── jetbrainsmono
│ │ │ ├── JetBrainsMono-Bold.woff2
│ │ │ ├── JetBrainsMono-BoldItalic.woff2
│ │ │ ├── JetBrainsMono-ExtraBold.woff2
│ │ │ ├── JetBrainsMono-ExtraBoldItalic.woff2
│ │ │ ├── JetBrainsMono-ExtraLight.woff2
│ │ │ ├── JetBrainsMono-ExtraLightItalic.woff2
│ │ │ ├── JetBrainsMono-Italic.woff2
│ │ │ ├── JetBrainsMono-Light.woff2
│ │ │ ├── JetBrainsMono-LightItalic.woff2
│ │ │ ├── JetBrainsMono-Medium.woff2
│ │ │ ├── JetBrainsMono-MediumItalic.woff2
│ │ │ ├── JetBrainsMono-Regular.woff2
│ │ │ ├── JetBrainsMono-SemiBold.woff2
│ │ │ ├── JetBrainsMono-SemiBoldItalic.woff2
│ │ │ ├── JetBrainsMono-Thin.woff2
│ │ │ └── JetBrainsMono-ThinItalic.woff2
│ │ └── termina
│ │ │ ├── termina-demi-web.eot
│ │ │ ├── termina-demi-web.svg
│ │ │ ├── termina-demi-web.ttf
│ │ │ ├── termina-demi-web.woff
│ │ │ └── termina-demi-web.woff2
│ └── img
│ │ ├── favicon-svg.svg
│ │ ├── favicon.ico
│ │ ├── header-logo-docs-dark.svg
│ │ ├── header-logo-docs.svg
│ │ ├── ico-chevron.svg
│ │ ├── ico-github.svg
│ │ ├── logo.png
│ │ ├── logo.svg
│ │ ├── logo
│ │ ├── aura.svg
│ │ ├── bitcanna.svg
│ │ ├── cudos.svg
│ │ ├── dymension.svg
│ │ ├── electra.svg
│ │ ├── firmachain.svg
│ │ ├── kyve.svg
│ │ ├── medibloc.svg
│ │ ├── mun.svg
│ │ ├── neutron.svg
│ │ ├── okp4.svg
│ │ ├── ollostation.svg
│ │ ├── sonr.svg
│ │ ├── source.svg
│ │ ├── stride.svg
│ │ └── umee.svg
│ │ ├── og-image.jpg
│ │ ├── web-1.png
│ │ ├── web-4.png
│ │ └── web-5.png
├── tailwind.config.js
├── versioned_docs
│ ├── version-v0.25
│ │ ├── 06-bounty.md
│ │ ├── 07-cli.md
│ │ ├── clients
│ │ │ ├── 01-typescript.md
│ │ │ └── _category_.json
│ │ ├── contributing
│ │ │ ├── 01-contributing.md
│ │ │ ├── 02-technical-setup.md
│ │ │ ├── _category_.json
│ │ │ └── templates
│ │ │ │ ├── 01-concept_template.md
│ │ │ │ ├── 02-tutorial-template.md
│ │ │ │ ├── _category_.json
│ │ │ │ └── readme.md
│ │ ├── guide
│ │ │ ├── 00-introduction.md
│ │ │ ├── 01-install.md
│ │ │ ├── 02-hello.md
│ │ │ ├── 03-blog
│ │ │ │ ├── 00-build-blog.md
│ │ │ │ ├── 01-comment-blog.md
│ │ │ │ ├── 02-connect-blockchain.md
│ │ │ │ └── _category_.json
│ │ │ ├── 04-nameservice
│ │ │ │ ├── 00-tutorial.md
│ │ │ │ ├── 01-init.md
│ │ │ │ ├── 02-messages.md
│ │ │ │ ├── 03-types.md
│ │ │ │ ├── 04-keeper.md
│ │ │ │ ├── 05-play.md
│ │ │ │ └── _category_.json
│ │ │ ├── 05-scavenge
│ │ │ │ ├── 01-hunt.md
│ │ │ │ ├── 02-game.md
│ │ │ │ ├── 03-scaffolding.md
│ │ │ │ ├── 04-messages.md
│ │ │ │ ├── 05-types.md
│ │ │ │ ├── 06-handlers.md
│ │ │ │ ├── 07-keeper.md
│ │ │ │ ├── 08-cli.md
│ │ │ │ ├── 09-play.md
│ │ │ │ └── _category_.json
│ │ │ ├── 06-loan.md
│ │ │ ├── 07-ibc.md
│ │ │ ├── 08-interchange
│ │ │ │ ├── 00-introduction.md
│ │ │ │ ├── 01-design.md
│ │ │ │ ├── 02-init.md
│ │ │ │ ├── 03-walkthrough.md
│ │ │ │ ├── 04-creating-order-books.md
│ │ │ │ ├── 05-mint-and-burn-voucher.md
│ │ │ │ ├── 06-creating-sell-orders.md
│ │ │ │ ├── 07-creating-buy-orders.md
│ │ │ │ ├── 08-cancelling-orders.md
│ │ │ │ ├── 09-tests.md
│ │ │ │ └── _category_.json
│ │ │ ├── _category_.json
│ │ │ └── images
│ │ │ │ ├── api.png
│ │ │ │ └── packet_sendpost.png
│ │ ├── index.md
│ │ ├── kb
│ │ │ ├── 00-kb.md
│ │ │ ├── 01-scaffold-chain.md
│ │ │ ├── 02-serve.md
│ │ │ ├── 03-config.md
│ │ │ ├── 04-genesis.md
│ │ │ ├── 05-types.md
│ │ │ ├── 06-proto.md
│ │ │ ├── 07-frontend.md
│ │ │ ├── 08-relayer.md
│ │ │ ├── 09-docker.md
│ │ │ ├── 10-band.md
│ │ │ ├── 11-simapp.md
│ │ │ ├── 12-params.md
│ │ │ └── _category_.json
│ │ ├── migration
│ │ │ ├── _category_.json
│ │ │ ├── readme.md
│ │ │ ├── v0.18.md
│ │ │ ├── v0.19.2.md
│ │ │ ├── v0.20.0.md
│ │ │ ├── v0.22.0.md
│ │ │ ├── v0.24.0.md
│ │ │ └── v0.25.0.md
│ │ ├── network
│ │ │ ├── 01-introduction.md
│ │ │ ├── 02-coordinator.md
│ │ │ ├── 03-validator.md
│ │ │ └── _category_.json
│ │ └── packages
│ │ │ ├── _category_.json
│ │ │ └── cosmostxcollector.md
│ ├── version-v0.26
│ │ ├── 01-welcome
│ │ │ ├── 01-index.md
│ │ │ ├── 02-install.md
│ │ │ └── _category_.json
│ │ ├── 02-guide
│ │ │ ├── 00-introduction.md
│ │ │ ├── 02-getting-started.md
│ │ │ ├── 03-hello
│ │ │ │ ├── 00-express.md
│ │ │ │ ├── 01-scaffolding.md
│ │ │ │ └── _category_.json
│ │ │ ├── 04-blog
│ │ │ │ ├── 00-express.md
│ │ │ │ ├── 01-intro.md
│ │ │ │ ├── 02-scaffolding.md
│ │ │ │ ├── 03-create.md
│ │ │ │ ├── 04-update.md
│ │ │ │ ├── 05-delete.md
│ │ │ │ ├── 06-show.md
│ │ │ │ ├── 07-list.md
│ │ │ │ ├── 08-play.md
│ │ │ │ ├── 09-summary.md
│ │ │ │ └── _category_.json
│ │ │ ├── 05-loan
│ │ │ │ ├── 00-intro.md
│ │ │ │ ├── 01-init.md
│ │ │ │ ├── 02-bank.md
│ │ │ │ ├── 03-request.md
│ │ │ │ ├── 04-approve.md
│ │ │ │ ├── 05-repay.md
│ │ │ │ ├── 06-liquidate.md
│ │ │ │ ├── 07-cancel.md
│ │ │ │ ├── 08-play.md
│ │ │ │ └── _category_.json
│ │ │ ├── 06-ibc.md
│ │ │ ├── 07-interchange
│ │ │ │ ├── 00-introduction.md
│ │ │ │ ├── 01-design.md
│ │ │ │ ├── 02-init.md
│ │ │ │ ├── 03-walkthrough.md
│ │ │ │ ├── 04-creating-order-books.md
│ │ │ │ ├── 05-mint-and-burn-voucher.md
│ │ │ │ ├── 06-creating-sell-orders.md
│ │ │ │ ├── 07-creating-buy-orders.md
│ │ │ │ ├── 08-cancelling-orders.md
│ │ │ │ ├── 09-tests.md
│ │ │ │ └── _category_.json
│ │ │ ├── 08-debug.md
│ │ │ ├── 09-docker.md
│ │ │ ├── 10-simapp.md
│ │ │ ├── _category_.json
│ │ │ └── images
│ │ │ │ ├── api.png
│ │ │ │ └── packet_sendpost.png
│ │ ├── 03-clients
│ │ │ ├── 01-go-client.md
│ │ │ ├── 02-typescript.md
│ │ │ ├── 03-vue.md
│ │ │ ├── 04-react.md
│ │ │ └── _category_.json
│ │ ├── 04-network
│ │ │ ├── 01-chain.md
│ │ │ ├── 02-introduction.md
│ │ │ ├── 03-coordinator.md
│ │ │ ├── 04-validator.md
│ │ │ ├── 05-coordination.md
│ │ │ ├── _category_.json
│ │ │ └── assets
│ │ │ │ ├── generation.png
│ │ │ │ ├── genesis.png
│ │ │ │ ├── launch.png
│ │ │ │ ├── process.png
│ │ │ │ └── requests.png
│ │ ├── 05-contributing
│ │ │ ├── 01-docs.md
│ │ │ └── _category_.json
│ │ ├── 06-migration
│ │ │ ├── _category_.json
│ │ │ ├── readme.md
│ │ │ ├── v0.18.md
│ │ │ ├── v0.19.2.md
│ │ │ ├── v0.20.0.md
│ │ │ ├── v0.22.0.md
│ │ │ ├── v0.24.0.md
│ │ │ ├── v0.25.0.md
│ │ │ ├── v0.25.1.md
│ │ │ └── v0.26.0.md
│ │ ├── 07-packages
│ │ │ ├── _category_.json
│ │ │ └── cosmostxcollector.md
│ │ ├── 08-references
│ │ │ ├── 01-cli.md
│ │ │ ├── 02-config.md
│ │ │ └── _category_.json
│ │ └── plugins
│ │ │ ├── 01-using-plugins.md
│ │ │ ├── 02-dev-plugins.md
│ │ │ └── _category_.json
│ ├── version-v0.27
│ │ ├── 01-welcome
│ │ │ ├── 01-index.md
│ │ │ ├── 02-install.md
│ │ │ └── _category_.json
│ │ ├── 02-guide
│ │ │ ├── 00-introduction.md
│ │ │ ├── 02-getting-started.md
│ │ │ ├── 03-hello
│ │ │ │ ├── 00-express.md
│ │ │ │ ├── 01-scaffolding.md
│ │ │ │ └── _category_.json
│ │ │ ├── 04-blog
│ │ │ │ ├── 00-express.md
│ │ │ │ ├── 01-intro.md
│ │ │ │ ├── 02-scaffolding.md
│ │ │ │ ├── 03-create.md
│ │ │ │ ├── 04-update.md
│ │ │ │ ├── 05-delete.md
│ │ │ │ ├── 06-show.md
│ │ │ │ ├── 07-list.md
│ │ │ │ ├── 08-play.md
│ │ │ │ ├── 09-summary.md
│ │ │ │ └── _category_.json
│ │ │ ├── 05-loan
│ │ │ │ ├── 00-intro.md
│ │ │ │ ├── 01-init.md
│ │ │ │ ├── 02-bank.md
│ │ │ │ ├── 03-request.md
│ │ │ │ ├── 04-approve.md
│ │ │ │ ├── 05-repay.md
│ │ │ │ ├── 06-liquidate.md
│ │ │ │ ├── 07-cancel.md
│ │ │ │ ├── 08-play.md
│ │ │ │ └── _category_.json
│ │ │ ├── 06-ibc.md
│ │ │ ├── 07-interchange
│ │ │ │ ├── 00-introduction.md
│ │ │ │ ├── 01-design.md
│ │ │ │ ├── 02-init.md
│ │ │ │ ├── 03-walkthrough.md
│ │ │ │ ├── 04-creating-order-books.md
│ │ │ │ ├── 05-mint-and-burn-voucher.md
│ │ │ │ ├── 06-creating-sell-orders.md
│ │ │ │ ├── 07-creating-buy-orders.md
│ │ │ │ ├── 08-cancelling-orders.md
│ │ │ │ ├── 09-tests.md
│ │ │ │ └── _category_.json
│ │ │ ├── 08-debug.md
│ │ │ ├── 09-docker.md
│ │ │ ├── 10-simapp.md
│ │ │ ├── _category_.json
│ │ │ └── images
│ │ │ │ ├── api.png
│ │ │ │ └── packet_sendpost.png
│ │ ├── 03-clients
│ │ │ ├── 01-go-client.md
│ │ │ ├── 02-typescript.md
│ │ │ ├── 03-vue.md
│ │ │ ├── 04-react.md
│ │ │ └── _category_.json
│ │ ├── 04-network
│ │ │ ├── 01-chain.md
│ │ │ ├── 02-introduction.md
│ │ │ ├── 03-coordinator.md
│ │ │ ├── 04-validator.md
│ │ │ ├── 05-coordination.md
│ │ │ ├── _category_.json
│ │ │ └── assets
│ │ │ │ ├── generation.png
│ │ │ │ ├── genesis.png
│ │ │ │ ├── launch.png
│ │ │ │ ├── process.png
│ │ │ │ └── requests.png
│ │ ├── 05-contributing
│ │ │ ├── 01-docs.md
│ │ │ └── _category_.json
│ │ ├── 06-migration
│ │ │ ├── _category_.json
│ │ │ ├── readme.md
│ │ │ ├── v0.18.md
│ │ │ ├── v0.19.2.md
│ │ │ ├── v0.20.0.md
│ │ │ ├── v0.22.0.md
│ │ │ ├── v0.24.0.md
│ │ │ ├── v0.25.0.md
│ │ │ ├── v0.25.1.md
│ │ │ └── v0.26.0.md
│ │ ├── 07-packages
│ │ │ ├── _category_.json
│ │ │ └── cosmostxcollector.md
│ │ ├── 08-references
│ │ │ ├── 01-cli.md
│ │ │ ├── 02-config.md
│ │ │ └── _category_.json
│ │ └── plugins
│ │ │ ├── 01-using-plugins.md
│ │ │ ├── 02-dev-plugins.md
│ │ │ └── _category_.json
│ ├── version-v28
│ │ ├── 01-welcome
│ │ │ ├── 01-index.md
│ │ │ ├── 02-install.md
│ │ │ └── _category_.json
│ │ ├── 02-guide
│ │ │ ├── 00-introduction.md
│ │ │ ├── 02-getting-started.md
│ │ │ ├── 03-hello-world.md
│ │ │ ├── 04-blog.md
│ │ │ ├── 05-loan.md
│ │ │ ├── 06-ibc.md
│ │ │ ├── 06-tokenfactory
│ │ │ │ ├── 01-tokenfactory.md
│ │ │ │ ├── 02-denoms.md
│ │ │ │ └── _category_.json
│ │ │ ├── 07-interchange
│ │ │ │ ├── 00-introduction.md
│ │ │ │ ├── 01-design.md
│ │ │ │ ├── 02-init.md
│ │ │ │ ├── 03-walkthrough.md
│ │ │ │ ├── 04-creating-order-books.md
│ │ │ │ ├── 05-mint-and-burn-voucher.md
│ │ │ │ ├── 06-creating-sell-orders.md
│ │ │ │ ├── 07-creating-buy-orders.md
│ │ │ │ ├── 08-cancelling-orders.md
│ │ │ │ ├── 09-tests.md
│ │ │ │ └── _category_.json
│ │ │ ├── 08-debug.md
│ │ │ ├── 09-docker.md
│ │ │ ├── 10-simapp.md
│ │ │ ├── _category_.json
│ │ │ └── images
│ │ │ │ ├── api.png
│ │ │ │ └── packet_sendpost.png
│ │ ├── 03-CLI-Commands
│ │ │ └── 01-cli-commands.md
│ │ ├── 03-clients
│ │ │ ├── 01-go-client.md
│ │ │ ├── 02-typescript.md
│ │ │ ├── 03-vue.md
│ │ │ ├── 04-react.md
│ │ │ └── _category_.json
│ │ ├── 04-network
│ │ │ ├── 01-chain.md
│ │ │ ├── 02-introduction.md
│ │ │ ├── 03-coordinator.md
│ │ │ ├── 04-validator.md
│ │ │ ├── 05-coordination.md
│ │ │ ├── _category_.json
│ │ │ └── assets
│ │ │ │ ├── generation.png
│ │ │ │ ├── genesis.png
│ │ │ │ ├── launch.png
│ │ │ │ ├── process.png
│ │ │ │ └── requests.png
│ │ ├── 05-contributing
│ │ │ ├── 01-docs.md
│ │ │ └── _category_.json
│ │ ├── 06-migration
│ │ │ ├── _category_.json
│ │ │ ├── readme.md
│ │ │ ├── v0.18.md
│ │ │ ├── v0.19.2.md
│ │ │ ├── v0.20.0.md
│ │ │ ├── v0.22.0.md
│ │ │ ├── v0.24.0.md
│ │ │ ├── v0.25.0.md
│ │ │ ├── v0.25.1.md
│ │ │ ├── v0.26.0.md
│ │ │ ├── v0.27.1.md
│ │ │ └── v28.0.0.md
│ │ ├── 07-packages
│ │ │ ├── _category_.json
│ │ │ └── cosmostxcollector.md
│ │ ├── 08-references
│ │ │ ├── 01-cli.md
│ │ │ ├── 02-config.md
│ │ │ └── _category_.json
│ │ └── apps
│ │ │ ├── 01-using-apps.md
│ │ │ ├── 02-developing-apps.md
│ │ │ └── _category_.json
│ └── version-v29
│ │ ├── 01-welcome
│ │ ├── 01-index.md
│ │ ├── 02-install.md
│ │ └── _category_.json
│ │ ├── 02-guide
│ │ ├── 02-introduction.md
│ │ ├── 03-hello-world.md
│ │ ├── 04-ibc.md
│ │ ├── 05-debug.md
│ │ ├── 06-docker.md
│ │ ├── 07-simapp.md
│ │ ├── 08-state.md
│ │ ├── _category_.json
│ │ └── images
│ │ │ └── packet_sendpost.png
│ │ ├── 03-CLI-Commands
│ │ ├── 01-cli-commands.md
│ │ └── _category_.json
│ │ ├── 04-clients
│ │ ├── 01-go-client.md
│ │ ├── 02-typescript.md
│ │ ├── 03-vue.md
│ │ ├── 04-react.md
│ │ └── _category_.json
│ │ ├── 05-contributing
│ │ ├── 01-docs.md
│ │ └── _category_.json
│ │ ├── 06-migration
│ │ ├── _category_.json
│ │ ├── readme.md
│ │ ├── v0.18.md
│ │ ├── v0.19.2.md
│ │ ├── v0.20.0.md
│ │ ├── v0.22.0.md
│ │ ├── v0.24.0.md
│ │ ├── v0.25.0.md
│ │ ├── v0.25.1.md
│ │ ├── v0.26.0.md
│ │ ├── v0.27.1.md
│ │ ├── v28.0.0.md
│ │ └── v29.0.0.md
│ │ ├── 07-packages
│ │ ├── _category_.json
│ │ └── cosmostxcollector.md
│ │ ├── 08-configuration
│ │ ├── 01-config.md
│ │ ├── 02-config_example.md
│ │ └── _category_.json
│ │ └── apps
│ │ ├── 01-using-apps.md
│ │ ├── 02-developing-apps.md
│ │ └── _category_.json
├── versioned_sidebars
│ ├── version-v0.25-sidebars.json
│ ├── version-v0.26-sidebars.json
│ ├── version-v0.27-sidebars.json
│ ├── version-v28-sidebars.json
│ └── version-v29-sidebars.json
├── versions.json
└── yarn.lock
├── firebase.json
├── go.mod
├── go.sum
├── ignite
├── cmd
│ ├── account.go
│ ├── account_create.go
│ ├── account_delete.go
│ ├── account_export.go
│ ├── account_import.go
│ ├── account_list.go
│ ├── account_show.go
│ ├── bubblemodel
│ │ ├── chain_debug.go
│ │ ├── chain_debug_test.go
│ │ ├── chain_serve.go
│ │ ├── chain_serve_test.go
│ │ ├── testdata
│ │ │ └── testdata.go
│ │ └── testnet_multi_node.go
│ ├── chain.go
│ ├── chain_build.go
│ ├── chain_debug.go
│ ├── chain_faucet.go
│ ├── chain_init.go
│ ├── chain_lint.go
│ ├── chain_serve.go
│ ├── chain_simulate.go
│ ├── cmd.go
│ ├── completion.go
│ ├── docs.go
│ ├── doctor.go
│ ├── generate.go
│ ├── generate_composables.go
│ ├── generate_go.go
│ ├── generate_hooks.go
│ ├── generate_openapi.go
│ ├── generate_typescript_client.go
│ ├── ignite
│ │ └── main.go
│ ├── plugin.go
│ ├── plugin_default.go
│ ├── plugin_default_test.go
│ ├── plugin_test.go
│ ├── scaffold.go
│ ├── scaffold_chain.go
│ ├── scaffold_chain_registry.go
│ ├── scaffold_configs.go
│ ├── scaffold_list.go
│ ├── scaffold_map.go
│ ├── scaffold_message.go
│ ├── scaffold_module.go
│ ├── scaffold_packet.go
│ ├── scaffold_params.go
│ ├── scaffold_query.go
│ ├── scaffold_react.go
│ ├── scaffold_single.go
│ ├── scaffold_type.go
│ ├── scaffold_vue.go
│ ├── testnet.go
│ ├── testnet_inplace.go
│ ├── testnet_multi_node.go
│ └── version.go
├── config
│ ├── chain
│ │ ├── base
│ │ │ └── config.go
│ │ ├── config.go
│ │ ├── config_test.go
│ │ ├── convert.go
│ │ ├── convert_test.go
│ │ ├── defaults
│ │ │ └── default.go
│ │ ├── errors.go
│ │ ├── network
│ │ │ └── testdata
│ │ │ │ ├── config.yaml
│ │ │ │ └── testdata.go
│ │ ├── parse.go
│ │ ├── parse_test.go
│ │ ├── testdata
│ │ │ ├── include1.yml
│ │ │ └── include2.yml
│ │ ├── v0
│ │ │ ├── config.go
│ │ │ ├── config_convert.go
│ │ │ ├── config_convert_test.go
│ │ │ ├── config_test.go
│ │ │ └── testdata
│ │ │ │ ├── config.yaml
│ │ │ │ └── testdata.go
│ │ ├── v1
│ │ │ ├── config.go
│ │ │ ├── config_convert.go
│ │ │ ├── config_test.go
│ │ │ ├── testdata
│ │ │ │ ├── config.yaml
│ │ │ │ ├── config2.yaml
│ │ │ │ └── testdata.go
│ │ │ ├── validator.go
│ │ │ ├── validator_servers.go
│ │ │ └── validator_servers_test.go
│ │ └── version
│ │ │ └── version.go
│ ├── config.go
│ ├── plugins
│ │ ├── config.go
│ │ ├── config_test.go
│ │ ├── parse.go
│ │ ├── parse_test.go
│ │ └── testdata
│ │ │ ├── igniteapps.yml
│ │ │ ├── invalid
│ │ │ └── igniteapps.yml
│ │ │ ├── localplugin
│ │ │ └── example
│ │ │ │ └── go.mod
│ │ │ ├── noconfig
│ │ │ └── somefile
│ │ │ └── other
│ │ │ └── igniteapps.yaml
│ └── testdata
│ │ └── testdata.go
├── internal
│ ├── analytics
│ │ └── analytics.go
│ ├── plugin
│ │ ├── execute.go
│ │ ├── execute_test.go
│ │ └── testdata
│ │ │ ├── consumer
│ │ │ └── config
│ │ │ │ ├── genesis.json
│ │ │ │ └── priv_validator_key.json
│ │ │ ├── execute_fail
│ │ │ ├── .gitignore
│ │ │ ├── go.mod
│ │ │ └── main.go
│ │ │ └── execute_ok
│ │ │ ├── .gitignore
│ │ │ ├── go.mod
│ │ │ └── main.go
│ └── tools
│ │ ├── gen-cli-docs
│ │ └── main.go
│ │ ├── gen-config-doc
│ │ ├── cmd
│ │ │ └── root.go
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── main.go
│ │ └── templates
│ │ │ └── doc
│ │ │ ├── doc.go
│ │ │ └── files
│ │ │ └── {{Name}}.plush
│ │ └── gen-mig-diffs
│ │ ├── cmd
│ │ └── root.go
│ │ ├── go.mod
│ │ ├── go.sum
│ │ ├── main.go
│ │ ├── pkg
│ │ ├── cache
│ │ │ └── cache.go
│ │ ├── diff
│ │ │ ├── compute.go
│ │ │ ├── compute_test.go
│ │ │ ├── diff.go
│ │ │ ├── subtract.go
│ │ │ ├── subtract_test.go
│ │ │ └── testdata
│ │ │ │ ├── modified
│ │ │ │ ├── bar.txt
│ │ │ │ ├── foo.txt
│ │ │ │ ├── new.txt
│ │ │ │ └── pkg
│ │ │ │ │ └── main.go
│ │ │ │ └── origin
│ │ │ │ ├── bar.txt
│ │ │ │ ├── foo.txt
│ │ │ │ └── pkg
│ │ │ │ └── main.go
│ │ ├── repo
│ │ │ └── repo.go
│ │ ├── scaffold
│ │ │ ├── commands.go
│ │ │ └── scaffold.go
│ │ └── url
│ │ │ ├── url.go
│ │ │ └── url_test.go
│ │ ├── readme.md
│ │ └── templates
│ │ └── doc
│ │ ├── doc.go
│ │ └── files
│ │ └── {{Version}}.md.plush
├── pkg
│ ├── announcements
│ │ ├── announcement.go
│ │ └── announcement_test.go
│ ├── archive
│ │ └── tar_gz.go
│ ├── availableport
│ │ ├── availableport.go
│ │ └── availableport_test.go
│ ├── cache
│ │ ├── cache.go
│ │ ├── cache_test.go
│ │ └── options.go
│ ├── chaincmd
│ │ ├── chaincmd.go
│ │ ├── in-place-testnet.go
│ │ ├── runner
│ │ │ ├── account.go
│ │ │ ├── chain.go
│ │ │ ├── runner.go
│ │ │ └── simulate.go
│ │ └── simulate.go
│ ├── chainregistry
│ │ ├── asset.go
│ │ ├── chain.go
│ │ ├── consts.go
│ │ └── doc.go
│ ├── checksum
│ │ └── checksum.go
│ ├── clictx
│ │ ├── clictx.go
│ │ └── clictx_test.go
│ ├── clidoc
│ │ ├── struct.go
│ │ └── struct_test.go
│ ├── cliui
│ │ ├── bubbleconfirm
│ │ │ ├── confirm.go
│ │ │ └── question.go
│ │ ├── clispinner
│ │ │ ├── clispinner.go
│ │ │ ├── simple.go
│ │ │ └── terminal.go
│ │ ├── cliui.go
│ │ ├── colors
│ │ │ └── colors.go
│ │ ├── entrywriter
│ │ │ ├── entrywriter.go
│ │ │ └── entrywriter_test.go
│ │ ├── icons
│ │ │ └── icon.go
│ │ ├── lineprefixer
│ │ │ ├── lineprefixer.go
│ │ │ └── lineprefixer_test.go
│ │ ├── log
│ │ │ └── output.go
│ │ ├── model
│ │ │ ├── events.go
│ │ │ ├── events_test.go
│ │ │ ├── model.go
│ │ │ └── spinner.go
│ │ ├── prefixgen
│ │ │ ├── prefixgen.go
│ │ │ └── prefixgen_test.go
│ │ └── view
│ │ │ ├── accountview
│ │ │ ├── account.go
│ │ │ └── account_test.go
│ │ │ └── errorview
│ │ │ └── error.go
│ ├── cmdrunner
│ │ ├── cmdrunner.go
│ │ ├── exec
│ │ │ └── exec.go
│ │ └── step
│ │ │ └── step.go
│ ├── confile
│ │ ├── confile.go
│ │ ├── confile_test.go
│ │ └── encoding.go
│ ├── cosmosaccount
│ │ ├── cosmosaccount.go
│ │ └── cosmosaccount_test.go
│ ├── cosmosanalysis
│ │ ├── app
│ │ │ ├── app.go
│ │ │ ├── app_test.go
│ │ │ └── testdata
│ │ │ │ ├── app_di.go
│ │ │ │ ├── app_generic.go
│ │ │ │ ├── app_minimal.go
│ │ │ │ ├── modules
│ │ │ │ ├── app_config
│ │ │ │ │ ├── app.go
│ │ │ │ │ ├── app_config.go
│ │ │ │ │ └── go.mod
│ │ │ │ ├── runtime
│ │ │ │ │ ├── app.go
│ │ │ │ │ └── go.mod
│ │ │ │ └── single_app
│ │ │ │ │ ├── app.go
│ │ │ │ │ └── go.mod
│ │ │ │ ├── no_app.go
│ │ │ │ └── two_app.go
│ │ ├── cosmosanalysis.go
│ │ ├── cosmosanalysis_test.go
│ │ ├── module
│ │ │ ├── module.go
│ │ │ ├── module_test.go
│ │ │ ├── options.go
│ │ │ └── testdata
│ │ │ │ ├── earth
│ │ │ │ ├── app
│ │ │ │ │ ├── app.go
│ │ │ │ │ └── app_config.go
│ │ │ │ ├── go.mod
│ │ │ │ ├── proto
│ │ │ │ │ └── planet
│ │ │ │ │ │ └── mars
│ │ │ │ │ │ └── mars.proto
│ │ │ │ └── x
│ │ │ │ │ └── mars
│ │ │ │ │ ├── keeper
│ │ │ │ │ └── query_my_query.go
│ │ │ │ │ └── types
│ │ │ │ │ └── types.go
│ │ │ │ └── planet
│ │ │ │ ├── app
│ │ │ │ └── app.go
│ │ │ │ ├── go.mod
│ │ │ │ ├── proto
│ │ │ │ └── planet
│ │ │ │ │ └── mars
│ │ │ │ │ └── mars.proto
│ │ │ │ └── x
│ │ │ │ └── mars
│ │ │ │ ├── keeper
│ │ │ │ └── query_my_query.go
│ │ │ │ └── types
│ │ │ │ └── types.go
│ │ └── testdata
│ │ │ ├── chain-sdk-fork
│ │ │ └── go.mod
│ │ │ └── chain
│ │ │ └── go.mod
│ ├── cosmosbuf
│ │ └── buf.go
│ ├── cosmosclient
│ │ ├── bank.go
│ │ ├── bank_test.go
│ │ ├── consensus.go
│ │ ├── cosmosclient.go
│ │ ├── cosmosclient_test.go
│ │ ├── gasometer.go
│ │ ├── mocks
│ │ │ ├── account_retriever.go
│ │ │ ├── bank_query_client.go
│ │ │ ├── faucet_client.go
│ │ │ ├── gasometer.go
│ │ │ ├── rpc_client.go
│ │ │ └── signer.go
│ │ ├── rpc.go
│ │ ├── signer.go
│ │ ├── testutil
│ │ │ └── mocks.go
│ │ ├── tx.go
│ │ ├── tx_options.go
│ │ ├── txservice.go
│ │ └── txservice_test.go
│ ├── cosmoserror
│ │ ├── error.go
│ │ └── error_test.go
│ ├── cosmosfaucet
│ │ ├── client_http.go
│ │ ├── cosmosfaucet.go
│ │ ├── http.go
│ │ ├── http_faucet.go
│ │ ├── http_openapi.go
│ │ ├── http_test.go
│ │ ├── openapi
│ │ │ └── openapi.yml.tmpl
│ │ ├── transfer.go
│ │ └── try_retrieve.go
│ ├── cosmosgen
│ │ ├── cosmosgen.go
│ │ ├── cosmosgen_test.go
│ │ ├── generate.go
│ │ ├── generate_composables.go
│ │ ├── generate_go.go
│ │ ├── generate_openapi.go
│ │ ├── generate_openapi_test.go
│ │ ├── generate_typescript.go
│ │ ├── generate_typescript_test.go
│ │ ├── install.go
│ │ ├── install_test.go
│ │ ├── sta.go
│ │ ├── template.go
│ │ ├── templates
│ │ │ ├── composable-root
│ │ │ │ └── useClient.ts.tpl
│ │ │ ├── composable
│ │ │ │ └── index.ts.tpl
│ │ │ ├── module
│ │ │ │ ├── index.ts.tpl
│ │ │ │ ├── module.ts.tpl
│ │ │ │ ├── registry.ts.tpl
│ │ │ │ └── types.ts.tpl
│ │ │ ├── rest
│ │ │ │ └── rest.ts.tpl
│ │ │ └── root
│ │ │ │ ├── client.ts.tpl
│ │ │ │ ├── env.ts.tpl
│ │ │ │ ├── helpers.ts.tpl
│ │ │ │ ├── index.ts.tpl
│ │ │ │ ├── modules.ts.tpl
│ │ │ │ ├── package.json.tpl
│ │ │ │ ├── tsconfig.json.tpl
│ │ │ │ └── types.d.ts.tpl
│ │ └── webtemplates.go
│ ├── cosmostestutil
│ │ └── sample
│ │ │ ├── sample.go
│ │ │ └── sample_test.go
│ ├── cosmostxcollector
│ │ ├── adapter
│ │ │ ├── adapter.go
│ │ │ └── postgres
│ │ │ │ ├── filters.go
│ │ │ │ ├── filters_test.go
│ │ │ │ ├── parsers.go
│ │ │ │ ├── postgres.go
│ │ │ │ ├── postgres_test.go
│ │ │ │ ├── schemas.go
│ │ │ │ ├── schemas
│ │ │ │ └── 1.sql
│ │ │ │ └── schemas_test.go
│ │ ├── collector.go
│ │ ├── collector_test.go
│ │ ├── mocks
│ │ │ ├── saver.go
│ │ │ └── txs_collector.go
│ │ └── query
│ │ │ ├── cursor.go
│ │ │ ├── event.go
│ │ │ ├── query.go
│ │ │ └── query_test.go
│ ├── cosmosutil
│ │ ├── address.go
│ │ ├── address_test.go
│ │ ├── config.go
│ │ ├── genesis
│ │ │ ├── genesis.go
│ │ │ └── genesis_test.go
│ │ ├── gentx.go
│ │ ├── gentx_test.go
│ │ └── testdata
│ │ │ ├── gentx1.json
│ │ │ ├── gentx2.json
│ │ │ └── gentx_invalid.json
│ ├── cosmosver
│ │ ├── cosmosver.go
│ │ ├── detect.go
│ │ ├── detect_test.go
│ │ └── testdata
│ │ │ ├── chain-sdk-fork
│ │ │ └── go.mod
│ │ │ ├── chain-sdk-local-fork
│ │ │ └── go.mod
│ │ │ └── chain
│ │ │ └── go.mod
│ ├── ctxreader
│ │ ├── ctxreader.go
│ │ └── ctxreader_test.go
│ ├── ctxticker
│ │ ├── ctxticker.go
│ │ └── ctxticker_test.go
│ ├── debugger
│ │ └── server.go
│ ├── dircache
│ │ ├── cache.go
│ │ ├── cache_test.go
│ │ └── testdata
│ │ │ ├── subdata
│ │ │ └── subfile
│ │ │ └── testfile
│ ├── dirchange
│ │ ├── dirchange.go
│ │ └── dirchange_test.go
│ ├── env
│ │ └── env.go
│ ├── errors
│ │ └── xerrors.go
│ ├── events
│ │ ├── bus.go
│ │ ├── bus_test.go
│ │ ├── events.go
│ │ └── events_test.go
│ ├── goanalysis
│ │ ├── goanalysis.go
│ │ ├── goanalysis_test.go
│ │ └── testdata
│ │ │ ├── fieldexist.go
│ │ │ ├── replace.go
│ │ │ └── varexist
│ ├── gocmd
│ │ ├── gocmd.go
│ │ └── gocmd_test.go
│ ├── goenv
│ │ ├── goenv.go
│ │ └── goenv_test.go
│ ├── gomodule
│ │ ├── gomodule.go
│ │ ├── gomodule_test.go
│ │ └── testdata
│ │ │ ├── local-module-fork
│ │ │ └── go.mod
│ │ │ └── module
│ │ │ └── go.mod
│ ├── gomodulepath
│ │ ├── gomodulepath.go
│ │ └── gomodulepath_test.go
│ ├── httpstatuschecker
│ │ ├── httpstatuschecker.go
│ │ └── httpstatuschecker_test.go
│ ├── jsonfile
│ │ ├── jsonfile.go
│ │ ├── jsonfile_test.go
│ │ └── testdata
│ │ │ ├── example.tar.gz
│ │ │ └── jsonfile.json
│ ├── localfs
│ │ ├── reset.go
│ │ ├── save.go
│ │ ├── search.go
│ │ ├── search_test.go
│ │ └── watcher.go
│ ├── markdownviewer
│ │ └── markdownviewer.go
│ ├── matomo
│ │ └── matomo.go
│ ├── multiformatname
│ │ ├── multiformatname.go
│ │ └── multiformatname_test.go
│ ├── numbers
│ │ ├── numbers.go
│ │ └── numbers_test.go
│ ├── openapiconsole
│ │ ├── console.go
│ │ └── index.tpl
│ ├── placeholder
│ │ ├── error.go
│ │ ├── tracer.go
│ │ └── tracer_test.go
│ ├── protoanalysis
│ │ ├── builder.go
│ │ ├── cache.go
│ │ ├── package.go
│ │ ├── package_test.go
│ │ ├── parser.go
│ │ ├── protoanalysis.go
│ │ ├── protoanalysis_test.go
│ │ ├── protoutil
│ │ │ ├── creator.go
│ │ │ ├── creator_test.go
│ │ │ ├── cursor.go
│ │ │ ├── cursor_test.go
│ │ │ ├── helpers.go
│ │ │ ├── parser.go
│ │ │ ├── parser_test.go
│ │ │ └── proto_test.go
│ │ └── testdata
│ │ │ ├── internal
│ │ │ └── foo.proto
│ │ │ ├── liquidity
│ │ │ ├── genesis.proto
│ │ │ ├── liquidity.proto
│ │ │ ├── msg.proto
│ │ │ ├── query.proto
│ │ │ └── tx.proto
│ │ │ └── nested_messages
│ │ │ └── nested_messages.proto
│ ├── randstr
│ │ └── randstr.go
│ ├── repoversion
│ │ └── repoversion.go
│ ├── safeconverter
│ │ └── safeconverter.go
│ ├── sentry
│ │ └── sentry.go
│ ├── swagger-combine
│ │ └── swagger-combine.go
│ ├── tarball
│ │ ├── tarball.go
│ │ ├── tarball_test.go
│ │ └── testdata
│ │ │ ├── example-empty.tar.gz
│ │ │ ├── example-root.tar.gz
│ │ │ ├── example-subfolder.tar.gz
│ │ │ ├── example.json
│ │ │ ├── example.tar.gz
│ │ │ └── invalid_file
│ ├── tendermintrpc
│ │ └── rpc.go
│ ├── truncatedbuffer
│ │ ├── truncatedbuffer.go
│ │ └── truncatedbuffer_test.go
│ ├── validation
│ │ └── errors.go
│ ├── xast
│ │ ├── function.go
│ │ ├── function_test.go
│ │ ├── global.go
│ │ ├── global_test.go
│ │ ├── import.go
│ │ ├── import_test.go
│ │ ├── testdata
│ │ │ ├── inspect
│ │ │ │ └── test.go
│ │ │ └── parseDir
│ │ │ │ ├── file.go
│ │ │ │ └── file_test.go
│ │ ├── xast.go
│ │ └── xast_test.go
│ ├── xembed
│ │ ├── testdata
│ │ │ ├── subtestdata
│ │ │ │ ├── subfile.txt
│ │ │ │ └── subtestdata
│ │ │ │ │ └── subfile2.txt
│ │ │ └── test.txt
│ │ ├── xembed.go
│ │ └── xembed_test.go
│ ├── xexec
│ │ ├── testdata
│ │ │ ├── bin.sh
│ │ │ └── nobin
│ │ ├── xexec.go
│ │ └── xexec_test.go
│ ├── xfilepath
│ │ ├── testdata
│ │ │ └── testfile
│ │ ├── xfilepath.go
│ │ └── xfilepath_test.go
│ ├── xgenny
│ │ ├── runner.go
│ │ ├── sourcemodification.go
│ │ ├── sourcemodification_test.go
│ │ ├── transformer.go
│ │ └── transformer_test.go
│ ├── xgit
│ │ ├── xgit.go
│ │ └── xgit_test.go
│ ├── xhttp
│ │ ├── response.go
│ │ ├── response_test.go
│ │ └── server.go
│ ├── xio
│ │ └── xio.go
│ ├── xnet
│ │ ├── xnet.go
│ │ └── xnet_test.go
│ ├── xos
│ │ ├── cp.go
│ │ ├── cp_test.go
│ │ ├── files.go
│ │ ├── files_test.go
│ │ ├── mv.go
│ │ ├── mv_test.go
│ │ └── rm.go
│ ├── xstrcase
│ │ ├── xstrcase.go
│ │ └── xstrcase_test.go
│ ├── xstrings
│ │ ├── xstrings.go
│ │ └── xstrings_test.go
│ ├── xtime
│ │ ├── clock.go
│ │ ├── clock_test.go
│ │ ├── unix.go
│ │ └── unix_test.go
│ ├── xurl
│ │ ├── xurl.go
│ │ └── xurl_test.go
│ └── xyaml
│ │ ├── map.go
│ │ ├── map_test.go
│ │ ├── yaml.go
│ │ └── yaml_test.go
├── services
│ ├── chain
│ │ ├── app.go
│ │ ├── build.go
│ │ ├── chain.go
│ │ ├── chain_test.go
│ │ ├── faucet.go
│ │ ├── generate.go
│ │ ├── init.go
│ │ ├── lint.go
│ │ ├── runtime.go
│ │ ├── serve.go
│ │ ├── simulate.go
│ │ ├── testdata
│ │ │ └── version
│ │ │ │ ├── mars.v0.2-3-gaae48b7.tar.gz
│ │ │ │ └── mars.v0.2.tar.gz
│ │ └── testnet.go
│ ├── doctor
│ │ ├── doctor.go
│ │ └── doctor_plugins.go
│ ├── plugin
│ │ ├── apps_config.go
│ │ ├── cache.go
│ │ ├── cache_test.go
│ │ ├── client_api.go
│ │ ├── flag.go
│ │ ├── flag_test.go
│ │ ├── grpc
│ │ │ └── v1
│ │ │ │ ├── client_api.pb.go
│ │ │ │ ├── interface.pb.go
│ │ │ │ ├── interface_command.go
│ │ │ │ ├── interface_flag.go
│ │ │ │ ├── interface_hook.go
│ │ │ │ ├── interface_manifest.go
│ │ │ │ ├── service.pb.go
│ │ │ │ ├── service_grpc.pb.go
│ │ │ │ ├── types_command_test.go
│ │ │ │ ├── types_hook_test.go
│ │ │ │ └── types_manifest_test.go
│ │ ├── interface.go
│ │ ├── mocks
│ │ │ ├── chainer.go
│ │ │ ├── client_api.go
│ │ │ └── interface.go
│ │ ├── plugin.go
│ │ ├── plugin_test.go
│ │ ├── protocol.go
│ │ ├── scaffold.go
│ │ ├── scaffold_test.go
│ │ ├── template
│ │ │ ├── .gitignore.plush
│ │ │ ├── app.ignite.yml.plush
│ │ │ ├── cmd
│ │ │ │ ├── cmd.go.plush
│ │ │ │ └── hello.go.plush
│ │ │ ├── go.mod.plush
│ │ │ ├── integration
│ │ │ │ └── app_test.go.plush
│ │ │ └── main.go.plush
│ │ └── testdata
│ │ │ └── fakebin
│ └── scaffolder
│ │ ├── chain_registry.go
│ │ ├── component.go
│ │ ├── component_test.go
│ │ ├── configs.go
│ │ ├── init.go
│ │ ├── message.go
│ │ ├── module.go
│ │ ├── packet.go
│ │ ├── params.go
│ │ ├── patch.go
│ │ ├── query.go
│ │ ├── scaffolder.go
│ │ ├── type.go
│ │ └── type_test.go
├── templates
│ ├── app
│ │ ├── app.go
│ │ ├── files-minimal
│ │ │ └── app
│ │ │ │ ├── app.go.plush
│ │ │ │ └── app_config.go.plush
│ │ ├── files
│ │ │ ├── .github
│ │ │ │ └── workflows
│ │ │ │ │ └── release.yml
│ │ │ ├── .gitignore
│ │ │ ├── Makefile.plush
│ │ │ ├── app
│ │ │ │ ├── app.go.plush
│ │ │ │ ├── app_config.go.plush
│ │ │ │ ├── config.go.plush
│ │ │ │ ├── export.go.plush
│ │ │ │ ├── genesis.go.plush
│ │ │ │ ├── genesis_account.go.plush
│ │ │ │ ├── ibc.go.plush
│ │ │ │ ├── sim_bench_test.go.plush
│ │ │ │ └── sim_test.go.plush
│ │ │ ├── buf.lock
│ │ │ ├── buf.yaml.plush
│ │ │ ├── cmd
│ │ │ │ └── {{binaryNamePrefix}}d
│ │ │ │ │ ├── cmd
│ │ │ │ │ ├── commands.go.plush
│ │ │ │ │ ├── config.go.plush
│ │ │ │ │ ├── root.go.plush
│ │ │ │ │ ├── testnet.go.plush
│ │ │ │ │ └── testnet_multi_node.go.plush
│ │ │ │ │ └── main.go.plush
│ │ │ ├── config.yml.plush
│ │ │ ├── docs
│ │ │ │ ├── docs.go.plush
│ │ │ │ ├── static
│ │ │ │ │ └── openapi.yml.plush
│ │ │ │ └── template
│ │ │ │ │ └── index.tpl
│ │ │ ├── go.mod.plush
│ │ │ ├── readme.md.plush
│ │ │ ├── testutil
│ │ │ │ └── sample
│ │ │ │ │ └── sample.go.plush
│ │ │ └── {{protoDir}}
│ │ │ │ ├── buf.gen.gogo.yaml
│ │ │ │ ├── buf.gen.sta.yaml
│ │ │ │ ├── buf.gen.swagger.yaml
│ │ │ │ └── buf.gen.ts.yaml
│ │ ├── options.go
│ │ ├── proto.go
│ │ └── proto_test.go
│ ├── field
│ │ ├── datatype
│ │ │ ├── address.go
│ │ │ ├── bool.go
│ │ │ ├── bytes.go
│ │ │ ├── coin.go
│ │ │ ├── custom.go
│ │ │ ├── int.go
│ │ │ ├── string.go
│ │ │ ├── types.go
│ │ │ ├── types_test.go
│ │ │ └── uint.go
│ │ ├── field.go
│ │ ├── field_test.go
│ │ ├── fields.go
│ │ ├── parse.go
│ │ ├── parse_test.go
│ │ └── plushhelpers
│ │ │ └── plushhelpers.go
│ ├── ibc
│ │ ├── files
│ │ │ └── packet
│ │ │ │ ├── component
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ ├── keeper
│ │ │ │ │ └── {{packetName}}.go.plush
│ │ │ │ │ └── types
│ │ │ │ │ └── packet_{{packetName}}.go.plush
│ │ │ │ └── messages
│ │ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ ├── client
│ │ │ │ └── cli
│ │ │ │ │ └── tx_{{packetName}}.go.plush
│ │ │ │ ├── keeper
│ │ │ │ ├── msg_server_{{packetName}}.go.plush
│ │ │ │ └── msg_server_{{packetName}}_test.go.plush
│ │ │ │ └── types
│ │ │ │ └── messages_{{packetName}}.go.plush
│ │ ├── packet.go
│ │ └── placeholders.go
│ ├── message
│ │ ├── files
│ │ │ ├── message
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ ├── keeper
│ │ │ │ │ └── msg_server_{{msgName}}.go.plush
│ │ │ │ │ └── types
│ │ │ │ │ └── message_{{msgName}}.go.plush
│ │ │ └── simapp
│ │ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ └── simulation
│ │ │ │ └── {{msgName}}.go.plush
│ │ ├── message.go
│ │ └── options.go
│ ├── module
│ │ ├── const.go
│ │ ├── create
│ │ │ ├── base.go
│ │ │ ├── configs.go
│ │ │ ├── files
│ │ │ │ ├── base
│ │ │ │ │ ├── x
│ │ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ │ ├── keeper
│ │ │ │ │ │ │ ├── genesis.go.plush
│ │ │ │ │ │ │ ├── genesis_test.go.plush
│ │ │ │ │ │ │ ├── keeper.go.plush
│ │ │ │ │ │ │ ├── keeper_test.go.plush
│ │ │ │ │ │ │ ├── msg_server.go.plush
│ │ │ │ │ │ │ ├── msg_update_params.go.plush
│ │ │ │ │ │ │ ├── msg_update_params_test.go.plush
│ │ │ │ │ │ │ ├── query.go.plush
│ │ │ │ │ │ │ ├── query_params.go.plush
│ │ │ │ │ │ │ └── query_params_test.go.plush
│ │ │ │ │ │ │ ├── module
│ │ │ │ │ │ │ ├── autocli.go.plush
│ │ │ │ │ │ │ ├── depinject.go.plush
│ │ │ │ │ │ │ ├── module.go.plush
│ │ │ │ │ │ │ └── simulation.go.plush
│ │ │ │ │ │ │ └── types
│ │ │ │ │ │ │ ├── codec.go.plush
│ │ │ │ │ │ │ ├── errors.go.plush
│ │ │ │ │ │ │ ├── expected_keepers.go.plush
│ │ │ │ │ │ │ ├── genesis.go.plush
│ │ │ │ │ │ │ ├── genesis_test.go.plush
│ │ │ │ │ │ │ ├── keys.go.plush
│ │ │ │ │ │ │ ├── params.go.plush
│ │ │ │ │ │ │ └── types.go.plush
│ │ │ │ │ └── {{protoDir}}
│ │ │ │ │ │ └── {{appName}}
│ │ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ ├── module
│ │ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ │ │ └── module.proto.plush
│ │ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ │ ├── genesis.proto.plush
│ │ │ │ │ │ ├── params.proto.plush
│ │ │ │ │ │ ├── query.proto.plush
│ │ │ │ │ │ └── tx.proto.plush
│ │ │ │ └── ibc
│ │ │ │ │ ├── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ ├── client
│ │ │ │ │ │ └── cli
│ │ │ │ │ │ │ └── tx.go.plush
│ │ │ │ │ │ ├── keeper
│ │ │ │ │ │ └── keeper_test.go.plush
│ │ │ │ │ │ ├── module
│ │ │ │ │ │ └── module_ibc.go.plush
│ │ │ │ │ │ └── types
│ │ │ │ │ │ ├── events_ibc.go.plush
│ │ │ │ │ │ └── expected_ibc_keeper.go.plush
│ │ │ │ │ └── {{protoDir}}
│ │ │ │ │ └── {{appName}}
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ └── packet.proto.plush
│ │ │ ├── ibc.go
│ │ │ ├── options.go
│ │ │ ├── params.go
│ │ │ └── templates.go
│ │ ├── module.go
│ │ ├── module_test.go
│ │ └── placeholders.go
│ ├── query
│ │ ├── files
│ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ └── keeper
│ │ │ │ └── query_{{queryName}}.go.plush
│ │ ├── options.go
│ │ ├── placeholders.go
│ │ └── query.go
│ └── typed
│ │ ├── dry
│ │ ├── dry.go
│ │ └── files
│ │ │ └── component
│ │ │ └── {{protoDir}}
│ │ │ └── {{appName}}
│ │ │ └── {{moduleName}}
│ │ │ └── {{protoVer}}
│ │ │ └── {{typeName}}.proto.plush
│ │ ├── genesis.go
│ │ ├── list
│ │ ├── files
│ │ │ ├── component
│ │ │ │ ├── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ └── keeper
│ │ │ │ │ │ ├── query_{{typeName}}.go.plush
│ │ │ │ │ │ └── query_{{typeName}}_test.go.plush
│ │ │ │ └── {{protoDir}}
│ │ │ │ │ └── {{appName}}
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ └── {{typeName}}.proto.plush
│ │ │ ├── messages
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ ├── keeper
│ │ │ │ │ ├── msg_server_{{typeName}}.go.plush
│ │ │ │ │ └── msg_server_{{typeName}}_test.go.plush
│ │ │ │ │ └── types
│ │ │ │ │ └── messages_{{typeName}}.go.plush
│ │ │ └── simapp
│ │ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ └── simulation
│ │ │ │ └── {{typeName}}.go.plush
│ │ ├── genesis.go
│ │ ├── list.go
│ │ └── simulation.go
│ │ ├── map
│ │ ├── files
│ │ │ ├── component
│ │ │ │ ├── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ ├── keeper
│ │ │ │ │ │ └── query_{{typeName}}.go.plush
│ │ │ │ │ │ └── types
│ │ │ │ │ │ └── key_{{typeName}}.go.plush
│ │ │ │ └── {{protoDir}}
│ │ │ │ │ └── {{appName}}
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ └── {{typeName}}.proto.plush
│ │ │ ├── messages
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ ├── keeper
│ │ │ │ │ └── msg_server_{{typeName}}.go.plush
│ │ │ │ │ └── types
│ │ │ │ │ └── messages_{{typeName}}.go.plush
│ │ │ ├── simapp
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── simulation
│ │ │ │ │ └── {{typeName}}.go.plush
│ │ │ └── tests
│ │ │ │ ├── component
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── keeper
│ │ │ │ │ └── query_{{typeName}}_test.go.plush
│ │ │ │ └── messages
│ │ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ └── keeper
│ │ │ │ └── msg_server_{{typeName}}_test.go.plush
│ │ ├── map.go
│ │ └── simulation.go
│ │ ├── options.go
│ │ ├── placeholders.go
│ │ ├── proto.go
│ │ ├── simulation.go
│ │ ├── singleton
│ │ ├── files
│ │ │ ├── component
│ │ │ │ ├── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ │ └── keeper
│ │ │ │ │ │ ├── query_{{typeName}}.go.plush
│ │ │ │ │ │ └── query_{{typeName}}_test.go.plush
│ │ │ │ └── {{protoDir}}
│ │ │ │ │ └── {{appName}}
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ └── {{protoVer}}
│ │ │ │ │ └── {{typeName}}.proto.plush
│ │ │ ├── messages
│ │ │ │ └── x
│ │ │ │ │ └── {{moduleName}}
│ │ │ │ │ ├── keeper
│ │ │ │ │ ├── msg_server_{{typeName}}.go.plush
│ │ │ │ │ └── msg_server_{{typeName}}_test.go.plush
│ │ │ │ │ └── types
│ │ │ │ │ └── messages_{{typeName}}.go.plush
│ │ │ └── simapp
│ │ │ │ └── x
│ │ │ │ └── {{moduleName}}
│ │ │ │ └── simulation
│ │ │ │ └── {{typeName}}.go.plush
│ │ ├── simulation.go
│ │ └── singleton.go
│ │ └── typed.go
└── version
│ ├── version.go
│ └── version_test.go
├── integration
├── account
│ ├── cmd_account_test.go
│ └── testdata
│ │ └── key
├── app.go
├── app
│ ├── cmd_app_test.go
│ └── cmd_proto_path_test.go
├── chain
│ ├── cache_test.go
│ ├── cmd_serve_test.go
│ └── config_test.go
├── client.go
├── cosmosgen
│ ├── bank_module_test.go
│ ├── bank_module_test.ts
│ ├── cosmosgen_composables_test.go
│ ├── cosmosgen_hooks_test.go
│ ├── cosmosgen_test.go
│ ├── custom_module_test.go
│ └── custom_module_test.ts
├── doctor
│ ├── doctor_test.go
│ └── testdata
│ │ ├── config-missing.txt
│ │ ├── config-need-migrate.txt
│ │ └── config-ok.txt
├── env.go
├── exec.go
├── faucet
│ └── faucet_test.go
├── ibc
│ └── cmd_ibc_test.go
├── list
│ └── cmd_list_test.go
├── map
│ └── cmd_map_test.go
├── other_components
│ ├── cmd_chain_registry_test.go
│ ├── cmd_message_test.go
│ └── cmd_query_test.go
├── params
│ ├── cmd_configs_test.go
│ └── cmd_params_test.go
├── plugin
│ ├── plugin_test.go
│ └── testdata
│ │ └── example-plugin
│ │ ├── go.mod
│ │ └── main.go
├── readme.md
├── relayer
│ └── cmd_relayer_test.go
├── simulation
│ └── simapp_test.go
├── single
│ └── cmd_singleton_test.go
├── testdata
│ └── tstestrunner
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── testutil
│ │ └── setup.ts
│ │ └── vitest.config.ts
└── tx
│ └── tx_test.go
├── packaging
├── .gitignore
├── brew
│ └── ignite.rb
├── readme.md
└── snap
│ └── snapcraft.yaml
├── proto
├── buf.gen.yaml
├── buf.md
└── ignite
│ └── services
│ └── plugin
│ └── grpc
│ └── v1
│ ├── client_api.proto
│ ├── interface.proto
│ └── service.proto
├── readme.md
├── release_process.md
└── scripts
├── gen-cli-docs
├── gen-config-doc
├── gen-mig-diffs
├── go-mod-tidy-all.sh
├── indocker
├── test
├── test-coverage
├── test-integration
└── test-unit
/.dockerignore:
--------------------------------------------------------------------------------
1 | .git
--------------------------------------------------------------------------------
/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "igntservices"
4 | },
5 | "targets": {
6 | "igntservices": {
7 | "hosting": {
8 | "docs.ignite.com": [
9 | "igntservices-docs"
10 | ]
11 | }
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | changelog.md merge=union
2 |
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # CODEOWNERS:
2 |
3 | # Primary repo maintainers
4 |
5 | * @ilgooz @Pantani @julienrbrt
6 |
7 | # Ts templates
8 |
9 | *.js @ilgooz @Pantani @julienrbrt @clockworkgr
10 | ignite/pkg/cosmosgen/templates/* @ilgooz @Pantani @julienrbrt @clockworkgr
11 |
12 | # Docs
13 |
14 | *.md @ilgooz @Pantani @julienrbrt @toschdev
15 | docs/* @ilgooz @Pantani @julienrbrt @toschdev
16 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md:
--------------------------------------------------------------------------------
1 | Please make sure to check the following for your PR:
2 |
3 | - [ ] This PR complies with the [contributing](../../contributing.md) guidelines.
4 | - [ ] Reviewed "Files changed" and left comments if necessary
5 | - [ ] Included relevant documentation changes.
6 |
7 | Ignite CLI team only:
8 |
9 | - [ ] I have updated the _Unreleased_ section in the changelog.md for my changes.
10 | - [ ] If the templates in `ignite/templates/files` have been changed, make
11 | sure that the change doesn't need to be reflected in the
12 | `ignite/templates/files-*` folders.
13 |
--------------------------------------------------------------------------------
/.github/codecov.yml:
--------------------------------------------------------------------------------
1 | coverage:
2 | precision: 2
3 | round: down
4 | range: 70...100
5 | status:
6 | project:
7 | default:
8 | target: auto
9 | threshold: 10%
10 | informational: true
11 | patch:
12 | default:
13 | informational: true
14 |
15 | comment:
16 | layout: "reach, diff, files"
17 | behavior: default
18 | require_changes: true
19 |
20 | codecov:
21 | notify:
22 | wait_for_ci: false
23 |
24 | ignore:
25 | - "*.pb.go"
26 | - "*.pb.gw.go"
27 | - "*.md"
28 | - "*.ts"
29 | - "actions/"
30 | - "assets/"
31 | - "docs/"
32 | - "integration/"
33 | - "scripts/"
34 |
--------------------------------------------------------------------------------
/.github/labeler.yml:
--------------------------------------------------------------------------------
1 | "component:ci":
2 | - "!.github/labeler.yml"
3 | - "!.github/labels.json"
4 | - .github/**/*
5 |
6 | "component:docs":
7 | - assets/**/*
8 | - docs/**/*
9 |
10 | "component:tools":
11 | - .actions/**/*
12 | - .scripts/**/*
13 |
14 | "component:packages":
15 | - ignite/pkg/**/*
16 |
17 | "component:cmd":
18 | - ignite/cmd/**/*
19 |
20 | "type:services":
21 | - ignite/services/**/*
22 |
23 | "component:templates":
24 | - ignite/templates/**/*
25 |
26 | "type:internal":
27 | - ignite/config/**/*
28 | - ignite/internal/**/*
29 | - ignite/version/**/*
30 |
31 | "component:configs":
32 | - "!*.md"
33 | - "*"
34 |
--------------------------------------------------------------------------------
/.github/mergify.yml:
--------------------------------------------------------------------------------
1 | queue_rules:
2 | - name: default
3 | queue_conditions:
4 | - "#approved-reviews-by>1"
5 | - base=main
6 | merge_conditions:
7 | - "#approved-reviews-by>1"
8 | merge_method: squash
9 | commit_message_template: |
10 | {{ title }} (#{{ number }})
11 | {{ body }}
12 |
13 | pull_request_rules:
14 | - name: backport patches to v28.x.y branch
15 | conditions:
16 | - base=main
17 | - label=backport/v28.x.y
18 | actions:
19 | backport:
20 | branches:
21 | - release/v28.x.y
22 | - name: backport patches to v29.x.y branch
23 | conditions:
24 | - base=main
25 | - label=backport/v29.x.y
26 | actions:
27 | backport:
28 | branches:
29 | - release/v29.x.y
30 | - name: refactored queue action rule
31 | conditions: []
32 | actions:
33 | queue:
34 |
--------------------------------------------------------------------------------
/.github/workflows/auto-author-assign.yml:
--------------------------------------------------------------------------------
1 | name: auto-author-assign
2 |
3 | on:
4 | pull_request_target:
5 | types: [ opened, reopened ]
6 |
7 | permissions:
8 | pull-requests: write
9 |
10 | concurrency:
11 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
12 | cancel-in-progress: true
13 |
14 | jobs:
15 | assign-author:
16 | runs-on: ubuntu-latest
17 | steps:
18 | - uses: toshimaru/auto-author-assign@v2.1.1
19 |
--------------------------------------------------------------------------------
/.github/workflows/cl-enforcer.yml:
--------------------------------------------------------------------------------
1 | name: Changelog Enforcer
2 | on:
3 | pull_request:
4 | # The specific activity types are listed here to include "labeled" and "unlabeled"
5 | # (which are not included by default for the "pull_request" trigger).
6 | # This is needed to allow skipping enforcement of the changelog in PRs with specific labels,
7 | # as defined in the (optional) "skipLabels" property.
8 | types: [ opened, synchronize, reopened, ready_for_review, labeled, unlabeled ]
9 |
10 | jobs:
11 | changelog:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: dangoslen/changelog-enforcer@v3
15 | with:
16 | changeLogPath: 'changelog.md'
17 | missingUpdateErrorMessage: 'Please add an entry to the changelog.md file or add the "skip-changelog" label'
18 | skipLabels: 'skip-changelog'
19 | versionPattern: ''
--------------------------------------------------------------------------------
/.github/workflows/gen-docs-cli.yml:
--------------------------------------------------------------------------------
1 | name: Generate Docs
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | cli:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v4
13 |
14 | - uses: actions/setup-go@v5
15 | with:
16 | go-version: 'stable'
17 |
18 | - name: Generate CLI Docs
19 | run: ./scripts/gen-cli-docs
20 |
21 | - name: Create Pull Request
22 | id: cpr
23 | uses: peter-evans/create-pull-request@v7
24 | with:
25 | title: "docs(cli): update generated docs"
26 | commit-message: "docs(cli): update generated docs"
27 | body: ""
28 | branch: feat/gen-cli-docs
29 |
30 | - name: Check outputs
31 | run: |
32 | echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
33 | echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
34 |
35 |
--------------------------------------------------------------------------------
/.github/workflows/gh-cleanup-cache.yml:
--------------------------------------------------------------------------------
1 | name: cleanup caches by a branch
2 | on:
3 | pull_request:
4 | types:
5 | - closed
6 |
7 | jobs:
8 | cleanup:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: Cleanup
12 | run: |
13 | gh extension install actions/gh-actions-cache
14 |
15 | echo "Fetching list of cache key"
16 | cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 )
17 |
18 | ## Setting this to not fail the workflow while deleting cache keys.
19 | set +e
20 | echo "Deleting caches..."
21 | for cacheKey in $cacheKeysForPR
22 | do
23 | gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
24 | done
25 | echo "Done"
26 | env:
27 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
28 | REPO: ${{ github.repository }}
29 | BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
30 |
--------------------------------------------------------------------------------
/.github/workflows/go-formatting.yml:
--------------------------------------------------------------------------------
1 | name: Go formatting
2 | on:
3 | push:
4 | branches: [ main ]
5 | paths:
6 | - '**.go'
7 |
8 | jobs:
9 | go-formatting:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout code
13 | uses: actions/checkout@v4
14 |
15 | - name: Install Go
16 | uses: actions/setup-go@v5
17 | with:
18 | go-version: 'stable'
19 |
20 | - name: Run make format
21 | run: make format
22 |
23 | - name: Create Pull Request
24 | uses: peter-evans/create-pull-request@v7
25 | with:
26 | title: "chore: go formatting"
27 | commit-message: "chore: go formatting"
28 | body: ""
29 | branch: chore/go-formatting
30 |
--------------------------------------------------------------------------------
/.github/workflows/janitor.yml:
--------------------------------------------------------------------------------
1 | name: Janitor
2 | # Janitor cleans up previous runs that are not completed for a given workflow
3 | # It cancels Sims and Tests
4 | # Reference the API https://api.github.com/repos/:org/:repo/actions/workflows to find workflow ids
5 | on:
6 | pull_request:
7 |
8 | jobs:
9 | cancel:
10 | name: "Cancel Previous Runs"
11 | runs-on: ubuntu-latest
12 | timeout-minutes: 3
13 | steps:
14 | - uses: styfle/cancel-workflow-action@0.12.1
15 | with:
16 | access_token: ${{ github.token }}
17 |
--------------------------------------------------------------------------------
/.github/workflows/labeler.yml:
--------------------------------------------------------------------------------
1 | name: "Pull Request Labeler"
2 | on:
3 | - pull_request_target
4 |
5 | concurrency:
6 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
7 | cancel-in-progress: true
8 |
9 | jobs:
10 | triage:
11 | permissions:
12 | contents: read
13 | pull-requests: write
14 | runs-on: ubuntu-latest
15 | steps:
16 | - uses: actions/labeler@v4 # keep v4 due to unwanted behavior changes in later versions.
17 |
--------------------------------------------------------------------------------
/.github/workflows/link-checker.yml:
--------------------------------------------------------------------------------
1 | name: Check links
2 | on:
3 | pull_request:
4 | push:
5 | branches:
6 | - main
7 | - release/*
8 |
9 | concurrency:
10 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
11 | cancel-in-progress: true
12 |
13 | jobs:
14 | markdown-link-check:
15 | runs-on: ubuntu-latest
16 | steps:
17 | - uses: actions/checkout@v4
18 | - uses: gaurav-nelson/github-action-markdown-link-check@1.0.16
19 | with:
20 | folder-path: "."
21 | use-verbose-mode: "yes"
22 | config-file: ".github/workflows/link-checker-config.json"
23 |
--------------------------------------------------------------------------------
/.github/workflows/proto-checker.yml:
--------------------------------------------------------------------------------
1 | name: Protobuf Files
2 |
3 | on:
4 | pull_request:
5 | paths:
6 | - "proto/**"
7 |
8 | permissions:
9 | contents: read
10 |
11 | jobs:
12 | lint:
13 | runs-on: ubuntu-latest
14 | timeout-minutes: 5
15 | steps:
16 | - uses: actions/checkout@v4
17 | - uses: bufbuild/buf-setup-action@v1.50.0
18 | - uses: bufbuild/buf-lint-action@v1
19 | with:
20 | input: "proto"
21 |
22 | break-check:
23 | runs-on: ubuntu-latest
24 | steps:
25 | - uses: actions/checkout@v3
26 | - uses: bufbuild/buf-setup-action@v1.50.0
27 | - uses: bufbuild/buf-breaking-action@v1
28 | with:
29 | input: "proto"
30 | against: "https://github.com/${{ github.repository }}.git#branch=${{ github.event.pull_request.base.ref }},ref=HEAD~1,subdir=proto"
31 |
--------------------------------------------------------------------------------
/.github/workflows/release-binary.yml:
--------------------------------------------------------------------------------
1 | name: Release Binaries
2 |
3 | on:
4 | release:
5 | types: [ published ]
6 |
7 | concurrency:
8 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
9 | cancel-in-progress: true
10 |
11 | jobs:
12 | binary:
13 | runs-on: ubuntu-latest
14 | env:
15 | working-directory: go/src/github.com/ignite/cli
16 |
17 | steps:
18 | - name: Set up Go
19 | uses: actions/setup-go@v5
20 | with:
21 | go-version: 'stable'
22 |
23 | - name: Checkout
24 | uses: actions/checkout@v4
25 | with:
26 | path: ${{ env.working-directory }}
27 | fetch-depth: 0
28 |
29 | - name: Run GoReleaser
30 | uses: goreleaser/goreleaser-action@v6
31 | with:
32 | workdir: ${{ env.working-directory }}
33 | version: '~> v2'
34 | args: release --clean
35 | env:
36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37 |
--------------------------------------------------------------------------------
/.github/workflows/stats.yaml:
--------------------------------------------------------------------------------
1 | on:
2 | schedule:
3 | # Run this once per day, towards the end of the day for keeping the most
4 | # recent data point most meaningful (hours are interpreted in UTC).
5 | - cron: "0 23 * * *"
6 | workflow_dispatch: # Allow for running this manually.
7 |
8 | jobs:
9 | j1:
10 | name: Ignite CLI Repository Statistics
11 | runs-on: ubuntu-latest
12 | steps:
13 | - name: run-ghrs
14 | uses: jgehrcke/github-repo-stats@v1.4.2
15 | with:
16 | ghtoken: ${{ secrets.ghrs_github_api_token }}
17 |
18 |
--------------------------------------------------------------------------------
/.github/workflows/test-cov.yml:
--------------------------------------------------------------------------------
1 | name: Test Coverage
2 |
3 | on:
4 | schedule:
5 | - cron: "0 0 * * *" # every day at midnight
6 |
7 | concurrency:
8 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
9 | cancel-in-progress: true
10 |
11 | jobs:
12 | test:
13 | runs-on: $ubuntu-latest
14 | steps:
15 | - uses: actions/checkout@v4
16 | with:
17 | ref: main # change in release branches
18 |
19 | - uses: actions/setup-go@v5
20 | with:
21 | go-version: "stable"
22 |
23 | - run: ./scripts/test-coverage
24 |
25 | - name: Upload coverage to Codecov
26 | uses: codecov/codecov-action@v5
27 | with:
28 | file: ./coverage.txt
29 | fail_ci_if_error: false
30 | verbose: true
31 |
--------------------------------------------------------------------------------
/.github/workflows/test-lint.yml:
--------------------------------------------------------------------------------
1 | name: Lint
2 |
3 | on:
4 | pull_request:
5 | push:
6 | branches:
7 | - main
8 | - release/*
9 |
10 | concurrency:
11 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
12 | cancel-in-progress: true
13 |
14 | jobs:
15 | lint:
16 | name: Lint Go code
17 | runs-on: ubuntu-latest
18 | timeout-minutes: 6
19 | steps:
20 | - uses: actions/checkout@v4
21 |
22 | - uses: actions/setup-go@v5
23 | with:
24 | go-version-file: go.mod
25 | cache: false
26 |
27 | - uses: golangci/golangci-lint-action@v6
28 | with:
29 | version: v1.64.5
30 | install-mode: goinstall
31 | args: --timeout 10m
32 | github-token: ${{ secrets.github_token }}
33 | skip-save-cache: true
34 |
--------------------------------------------------------------------------------
/.github/workflows/test-semantic.yml:
--------------------------------------------------------------------------------
1 | name: Semantic PR
2 |
3 | on:
4 | pull_request_target:
5 | types:
6 | - opened
7 | - edited
8 | - synchronize
9 |
10 | jobs:
11 | semantic_pr:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: amannn/action-semantic-pull-request@v5
15 | env:
16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 |
3 | on:
4 | pull_request:
5 | push:
6 | branches:
7 | - main
8 | - release/*
9 |
10 | concurrency:
11 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
12 | cancel-in-progress: true
13 |
14 | jobs:
15 | test:
16 | runs-on: ${{ matrix.os }}
17 | strategy:
18 | matrix:
19 | os: [ubuntu-latest, macos-latest]
20 | steps:
21 | - uses: actions/checkout@v4
22 |
23 | - uses: actions/setup-go@v5
24 | with:
25 | go-version: "stable"
26 |
27 | - run: ./scripts/test
28 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | scripts/**/nodetime-*
2 | **/testdata/**/go.sum
3 | **/testdata/go.sum
4 | dist/
5 | node_modules
6 | .DS_Store
7 | .idea
8 | .vscode
9 | docs/.vuepress/dist
10 | build/
11 | *coverage.*
12 | *.ign
--------------------------------------------------------------------------------
/.goreleaser.yml:
--------------------------------------------------------------------------------
1 | project_name: ignite
2 | builds:
3 | - main: ./ignite/cmd/ignite
4 | ldflags:
5 | - -s -w -X github.com/ignite/cli/v28/ignite/version.Version={{.Tag}} # bump to v29? check which action is ran on tagging
6 | goos:
7 | - linux
8 | - darwin
9 | goarch:
10 | - amd64
11 | - arm64
12 |
--------------------------------------------------------------------------------
/actions/cli/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ignitehq/cli:latest
2 |
3 | # Set the github runner user and group id
4 | USER 1001:121
--------------------------------------------------------------------------------
/actions/cli/action.yml:
--------------------------------------------------------------------------------
1 | name: cli
2 | description: Ignite CLI
3 | runs:
4 | using: docker
5 | image: Dockerfile
6 |
--------------------------------------------------------------------------------
/actions/cli/readme.md:
--------------------------------------------------------------------------------
1 | # Ignite CLI Action
2 |
3 | This action makes the `ignite` CLI available as a Github Action.
4 |
5 | ## Quick start
6 |
7 | Add a new workflow to your repo:
8 |
9 | ```yml
10 | on: push
11 |
12 | jobs:
13 | help:
14 | runs-on: ubuntu-latest
15 | steps:
16 | - name: Checkout
17 | uses: actions/checkout@v2
18 |
19 | - name: Print Help
20 | uses: ignite/cli/actions/cli@main
21 | with:
22 | args: -h
23 | ```
24 |
--------------------------------------------------------------------------------
/assets/ignite-cli.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/assets/ignite-cli.png
--------------------------------------------------------------------------------
/buf.yaml:
--------------------------------------------------------------------------------
1 | version: v2
2 | modules:
3 | - path: proto
4 | name: buf.build/ignitehq/cli
5 | lint:
6 | use:
7 | - STANDARD
8 | - FILE_LOWER_SNAKE_CASE
9 | except:
10 | - COMMENT_FIELD
11 | - RPC_REQUEST_STANDARD_NAME
12 | - RPC_RESPONSE_STANDARD_NAME
13 | - SERVICE_SUFFIX
14 | disallow_comment_ignores: true
15 | breaking:
16 | use:
17 | - FILE
18 | except:
19 | - EXTENSION_NO_DELETE
20 | - FIELD_SAME_DEFAULT
21 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | /node_modules
3 |
4 | # Production
5 | /build
6 |
7 | # Generated files
8 | .docusaurus
9 | .cache-loader
10 |
11 | # Misc
12 | .DS_Store
13 | .env.local
14 | .env.development.local
15 | .env.test.local
16 | .env.production.local
17 |
18 | npm-debug.log*
19 | yarn-debug.log*
20 | yarn-error.log*
21 |
--------------------------------------------------------------------------------
/docs/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3 | };
4 |
--------------------------------------------------------------------------------
/docs/docs.go:
--------------------------------------------------------------------------------
1 | package docs
2 |
3 | import "embed"
4 |
5 | // Docs are Ignite CLI docs.
6 | //
7 | //go:embed docs
8 | var Docs embed.FS
9 |
--------------------------------------------------------------------------------
/docs/docs/01-welcome/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Welcome",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/02-guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Getting Started",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/02-guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/docs/02-guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/docs/03-CLI-Commands/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "CLI Commands",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/04-clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Create an Interface",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/05-contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contribute to Ignite",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/06-migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/06-migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all
12 | the modules you use in your chain.
13 |
--------------------------------------------------------------------------------
/docs/docs/07-packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/docs/08-configuration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Configuration",
3 | "link": null,
4 | "collapsed": false
5 | }
--------------------------------------------------------------------------------
/docs/docs/apps/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Ignite Apps",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/src/css/base.css:
--------------------------------------------------------------------------------
1 | @layer base {
2 | html {
3 | @apply font-inter;
4 | font-feature-settings: 'kern', 'liga', 'calt', 'zero' 0;
5 | -webkit-font-feature-settings: 'kern', 'liga', 'calt', 'zero' 0;
6 | text-size-adjust: 100%;
7 | -moz-osx-font-smoothing: grayscale;
8 | font-smoothing: antialiased;
9 | font-variant-ligatures: contextual common-ligatures;
10 | font-kerning: normal;
11 | text-rendering: optimizeLegibility;
12 |
13 | @supports (font-variation-settings: normal) {
14 | @apply font-intervar
15 | }
16 | }
17 |
18 | *,
19 | *::before,
20 | *::after {
21 | box-sizing: border-box;
22 | margin: 0;
23 | }
24 |
25 | svg { display: inline; }
26 |
27 | ::selection{}
28 | }
--------------------------------------------------------------------------------
/docs/static/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/.nojekyll
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Black.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Black.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-BlackItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-BlackItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-BlackItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-BlackItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Bold.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Bold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-BoldItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-BoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraBold.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraBold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraBoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraLight.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraLight.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraLight.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraLight.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraLightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraLightItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ExtraLightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ExtraLightItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Italic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Italic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Light.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Light.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Light.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-LightItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-LightItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-LightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-LightItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Medium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Medium.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Medium.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-MediumItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-MediumItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-MediumItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-MediumItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Regular.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Regular.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-SemiBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-SemiBold.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-SemiBold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-SemiBoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-SemiBoldItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-SemiBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-SemiBoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Thin.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Thin.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-Thin.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ThinItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ThinItalic.woff
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-ThinItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-ThinItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-italic.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-italic.var.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/inter/Inter-roman.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/inter/Inter-roman.var.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/intervar/Inter.var.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/intervar/Inter.var.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Bold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-BoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraBoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLight.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLight.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-ExtraLightItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Italic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Light.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Light.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-LightItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-LightItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Medium.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-MediumItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-MediumItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Regular.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBold.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-SemiBoldItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-Thin.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-Thin.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/jetbrainsmono/JetBrainsMono-ThinItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/jetbrainsmono/JetBrainsMono-ThinItalic.woff2
--------------------------------------------------------------------------------
/docs/static/fonts/termina/termina-demi-web.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/termina/termina-demi-web.eot
--------------------------------------------------------------------------------
/docs/static/fonts/termina/termina-demi-web.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/termina/termina-demi-web.ttf
--------------------------------------------------------------------------------
/docs/static/fonts/termina/termina-demi-web.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/termina/termina-demi-web.woff
--------------------------------------------------------------------------------
/docs/static/fonts/termina/termina-demi-web.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/fonts/termina/termina-demi-web.woff2
--------------------------------------------------------------------------------
/docs/static/img/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/favicon.ico
--------------------------------------------------------------------------------
/docs/static/img/ico-chevron.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/docs/static/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/logo.png
--------------------------------------------------------------------------------
/docs/static/img/logo/cudos.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/docs/static/img/logo/kyve.svg:
--------------------------------------------------------------------------------
1 |
25 |
--------------------------------------------------------------------------------
/docs/static/img/og-image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/og-image.jpg
--------------------------------------------------------------------------------
/docs/static/img/web-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/web-1.png
--------------------------------------------------------------------------------
/docs/static/img/web-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/web-4.png
--------------------------------------------------------------------------------
/docs/static/img/web-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/static/img/web-5.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/06-bounty.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 8
3 | description: Ignite CLI bounty program incentives and rewards.
4 | ---
5 |
6 | # Bounty program
7 |
8 | Our Ignite CLI bounty program provides incentives for your participation and pays rewards. If you know Golang, follow the bounty issues, write code, close issues, and get rewarded.
9 |
10 | Do your bounty hunting in our repo. Track new, in-progress, and completed bounties in the [GitHub Issues](https://github.com/ignite/cli/issues?q=is%3Aissue+is%3Aopen+label%3Abounty).
11 |
12 | For details on the Ignite CLI bounty program, join the #bounty channel in [Ignite Discord](https://discord.com/invite/ignite).
13 |
14 | New bounties are posted and claimed in Discord on the #bounty announcement channel.
15 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Clients",
3 | "position": 6,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contributing to Ignite CLI docs",
3 | "position": 8,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/contributing/templates/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Ignite article templates",
3 | "position": 3,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/contributing/templates/readme.md:
--------------------------------------------------------------------------------
1 | # Ignite article templates
2 |
3 | Use these templates along with our style guide to help you create articles for the Ignite CLI community.
4 |
5 | Choose the template that best fits the kind of content you're creating:
6 |
7 | * `tutorial_template.md` - Template for long-form interactive "how to" and getting started tutorials that take the form of a lesson.
8 | * `concept_template.md` - Template for conceptual articles that are oriented to understanding. Concept articles explore a subject at a high level.
9 |
10 | These templates are starting points and are not substitutes for the Ignite style and formatting guide.
11 |
12 | Happy building and happy writing!
13 |
14 | — The Ignite Ecosystem Development Team
15 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/03-blog/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Module basics: Blog",
3 | "position": 3,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/04-nameservice/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Sending Tokens: Nameservice",
3 | "position": 4,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/05-scavenge/06-handlers.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 6
3 | ---
4 |
5 | # Handlers
6 |
7 | For a message to reach a keeper, it has to go through a message server handler. A handler is where you can apply logic to allow or deny a message to succeed.
8 |
9 | * If you're familiar with the [Model-view-controller](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) (MVC) software architecture, the keeper is a bit like the model, and the handler is a bit like the controller.
10 | * If you're familiar with [React]() or [Vue](https://en.wikipedia.org/wiki/Vue.js) architecture, the keeper is a bit like the reducer store and the handler is a bit like actions.
11 |
12 | Three message types were automatically added to the message server:
13 |
14 | * `MsgSubmitScavenge`
15 | * `MsgCommitSolution`
16 | * `MsgRevealSolution`
17 |
18 | Each message, when handled, calls the appropriate keeper method that is responsible for committing changes to the store.
19 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/05-scavenge/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Escrow Account: Scavenge",
3 | "position": 5,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/08-interchange/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: Interchange",
3 | "position": 8,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Developer Tutorials",
3 | "position": 2,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/images/api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.25/guide/images/api.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.25/guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/kb/00-kb.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | slug: /kb
4 | ---
5 |
6 | # Knowledge Base
7 |
8 | Knowledge base articles cover different aspects of Ignite CLI. This online library includes reference content on supported types, protocol buffer files, chain simulation as well as an overview of scaffolding a chain all the way to starting an IBC relayer.
9 |
10 | If you're new to Ignite CLI or want to go through a series of tutorials, visit the [Developer Tutorials](/guide).
11 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/kb/06-proto.md:
--------------------------------------------------------------------------------
1 | ---
2 | description: Protocol buffer file support in Ignite CLI
3 | sidebar_position: 6
4 | ---
5 |
6 | # Protocol buffer files
7 |
8 | Protocol buffer files define the data structures used by Cosmos SDK modules.
9 |
10 | ## Files and directories
11 |
12 | Inside the `proto` directory, a directory for each custom module contains `query.proto`, `tx.proto`, `genesis.proto`, and other files.
13 |
14 | The `ignite chain serve` command automatically generates Go code from proto files on every file change.
15 |
16 | ## Third-party proto files
17 |
18 | Third-party proto files, including those of Cosmos SDK and Tendermint, are bundled with Ignite CLI. To import third-party proto files in your custom proto files:
19 |
20 | ```protobuf
21 | import "cosmos/base/query/v1beta1/pagination.proto";
22 | ```
23 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/kb/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Knowledge Base",
3 | "position": 3,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "position": 4,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/migration/readme.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Migration Guides
6 |
7 | Welcome to the section on upgrading to a newer version of Ignite CLI! If you're
8 | looking to update to the latest version, you'll want to start by checking the
9 | documentation to see if there are any special considerations or instructions you
10 | need to follow.
11 |
12 | If there is no documentation for the latest version of Ignite CLI, it's
13 | generally safe to assume that there were no breaking changes, and you can
14 | proceed with using the latest version with your project.
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all the modules you use in your chain.
12 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/network/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Network",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.25/packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "position": 5,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/01-welcome/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Welcome",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/03-hello/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Hello, World!",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/04-blog/01-intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: In-depth tutorial
3 | ---
4 |
5 | # In-depth blog tutorial
6 |
7 | In this tutorial, you will learn how to create a blog application as a Cosmos
8 | SDK blockchain using the Ignite CLI by building it from scratch. This means that
9 | you will be responsible for setting up the necessary types, messages, and
10 | queries and writing the logic to create, read, update, and delete blog posts on
11 | the blockchain.
12 |
13 | The functionality of the application you will be building will be identical to
14 | what is generated by the Ignite CLI command `ignite scaffold list post title
15 | body`, but you will be doing it manually in order to gain a deeper understanding
16 | of the process. Through this tutorial, you will learn how to build a blog
17 | application on a Cosmos SDK blockchain using the Ignite CLI in a hands-on way.
18 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/04-blog/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Module basics: Blog",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/05-loan/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: DeFi Loan",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/07-interchange/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: Interchange",
3 | "position": 8,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/images/api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/02-guide/images/api.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/02-guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/02-guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/03-clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a client app",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Launch a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/assets/generation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/04-network/assets/generation.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/assets/genesis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/04-network/assets/genesis.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/assets/launch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/04-network/assets/launch.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/assets/process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/04-network/assets/process.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/04-network/assets/requests.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.26/04-network/assets/requests.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/05-contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contribute to Ignite",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/06-migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/06-migration/readme.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Migration Guides
6 |
7 | Welcome to the section on upgrading to a newer version of Ignite CLI! If you're
8 | looking to update to the latest version, you'll want to start by checking the
9 | documentation to see if there are any special considerations or instructions you
10 | need to follow.
11 |
12 | If there is no documentation for the latest version of Ignite CLI, it's
13 | generally safe to assume that there were no breaking changes, and you can
14 | proceed with using the latest version with your project.
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/06-migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all
12 | the modules you use in your chain.
13 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/07-packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/08-references/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "References",
3 | "link": null,
4 | "collapsed": false
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.26/plugins/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Plugins",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/01-welcome/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Welcome",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/03-hello/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Hello, World!",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/04-blog/01-intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: In-depth tutorial
3 | ---
4 |
5 | # In-depth blog tutorial
6 |
7 | In this tutorial, you will learn how to create a blog application as a Cosmos
8 | SDK blockchain using the Ignite CLI by building it from scratch. This means that
9 | you will be responsible for setting up the necessary types, messages, and
10 | queries and writing the logic to create, read, update, and delete blog posts on
11 | the blockchain.
12 |
13 | The functionality of the application you will be building will be identical to
14 | what is generated by the Ignite CLI command `ignite scaffold list post title
15 | body`, but you will be doing it manually in order to gain a deeper understanding
16 | of the process. Through this tutorial, you will learn how to build a blog
17 | application on a Cosmos SDK blockchain using the Ignite CLI in a hands-on way.
18 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/04-blog/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Module basics: Blog",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/05-loan/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: DeFi Loan",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/07-interchange/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: Interchange",
3 | "position": 8,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/images/api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/02-guide/images/api.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/02-guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/02-guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/03-clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a client app",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Launch a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/assets/generation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/04-network/assets/generation.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/assets/genesis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/04-network/assets/genesis.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/assets/launch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/04-network/assets/launch.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/assets/process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/04-network/assets/process.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/04-network/assets/requests.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v0.27/04-network/assets/requests.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/05-contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contribute to Ignite",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/06-migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/06-migration/readme.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Migration Guides
6 |
7 | Welcome to the section on upgrading to a newer version of Ignite CLI! If you're
8 | looking to update to the latest version, you'll want to start by checking the
9 | documentation to see if there are any special considerations or instructions you
10 | need to follow.
11 |
12 | If there is no documentation for the latest version of Ignite CLI, it's
13 | generally safe to assume that there were no breaking changes, and you can
14 | proceed with using the latest version with your project.
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/06-migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all
12 | the modules you use in your chain.
13 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/07-packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/08-references/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "References",
3 | "link": null,
4 | "collapsed": false
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v0.27/plugins/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Plugins",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/01-welcome/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Welcome",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/02-guide/06-tokenfactory/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: Tokenfactory",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/02-guide/07-interchange/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Advanced Module: Interchange",
3 | "position": 8,
4 | "link": null
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/02-guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/02-guide/images/api.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/02-guide/images/api.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/02-guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/02-guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/03-clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Develop a client app",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Launch a chain",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/assets/generation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/04-network/assets/generation.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/assets/genesis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/04-network/assets/genesis.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/assets/launch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/04-network/assets/launch.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/assets/process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/04-network/assets/process.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/04-network/assets/requests.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v28/04-network/assets/requests.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/05-contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contribute to Ignite",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/06-migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/06-migration/readme.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Migration Guides
6 |
7 | Welcome to the section on upgrading to a newer version of Ignite CLI! If you're
8 | looking to update to the latest version, you'll want to start by checking the
9 | documentation to see if there are any special considerations or instructions you
10 | need to follow.
11 |
12 | If there is no documentation for the latest version of Ignite CLI, it's
13 | generally safe to assume that there were no breaking changes, and you can
14 | proceed with using the latest version with your project.
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/06-migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all
12 | the modules you use in your chain.
13 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/07-packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/08-references/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "References",
3 | "link": null,
4 | "collapsed": false
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v28/apps/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Ignite Apps",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/01-welcome/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Welcome",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/02-guide/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Getting Started",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/02-guide/images/packet_sendpost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/docs/versioned_docs/version-v29/02-guide/images/packet_sendpost.png
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/03-CLI-Commands/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "CLI Commands",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/04-clients/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Create an Interface",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/05-contributing/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Contribute to Ignite",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/06-migration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Migration",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/06-migration/v0.20.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 997
3 | title: v0.20.0
4 | description: For chains that were scaffolded with Ignite CLI versions lower than v0.20.0, changes are required to use Ignite CLI v0.20.0.
5 | ---
6 |
7 | # Upgrading a blockchain to use Ignite CLI v0.20.2
8 |
9 | 1. Upgrade your Cosmos SDK version to [v0.45.3](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.3).
10 |
11 | 2. Update your `SetOrderBeginBlockers` and `SetOrderEndBlockers` in your `app/app.go` to explicitly add entries for all
12 | the modules you use in your chain.
13 |
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/07-packages/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Packages",
3 | "link": null
4 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/08-configuration/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Configuration",
3 | "link": null,
4 | "collapsed": false
5 | }
--------------------------------------------------------------------------------
/docs/versioned_docs/version-v29/apps/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Ignite Apps",
3 | "position": 7,
4 | "link": null
5 | }
6 |
--------------------------------------------------------------------------------
/docs/versioned_sidebars/version-v0.25-sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "tutorialSidebar": [
3 | {
4 | "type": "autogenerated",
5 | "dirName": "."
6 | },
7 | {
8 | "type": "category",
9 | "label": "Resources",
10 | "collapsed": false,
11 | "items": [
12 | {
13 | "type": "link",
14 | "label": "Ignite CLI on Github",
15 | "href": "https://github.com/ignite/cli"
16 | },
17 | {
18 | "type": "link",
19 | "label": "Cosmos SDK Docs",
20 | "href": "https://docs.cosmos.network/"
21 | }
22 | ]
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/docs/versioned_sidebars/version-v0.26-sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "tutorialSidebar": [
3 | {
4 | "type": "autogenerated",
5 | "dirName": "."
6 | },
7 | {
8 | "type": "category",
9 | "label": "Resources",
10 | "collapsed": true,
11 | "items": [
12 | {
13 | "type": "link",
14 | "label": "Ignite CLI on Github",
15 | "href": "https://github.com/ignite/cli"
16 | },
17 | {
18 | "type": "link",
19 | "label": "Cosmos SDK Docs",
20 | "href": "https://docs.cosmos.network/"
21 | }
22 | ]
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/docs/versioned_sidebars/version-v0.27-sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "tutorialSidebar": [
3 | {
4 | "type": "autogenerated",
5 | "dirName": "."
6 | },
7 | {
8 | "type": "category",
9 | "label": "Resources",
10 | "collapsed": true,
11 | "items": [
12 | {
13 | "type": "link",
14 | "label": "Ignite CLI on Github",
15 | "href": "https://github.com/ignite/cli"
16 | },
17 | {
18 | "type": "link",
19 | "label": "Cosmos SDK Docs",
20 | "href": "https://docs.cosmos.network/"
21 | }
22 | ]
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/docs/versioned_sidebars/version-v28-sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "tutorialSidebar": [
3 | {
4 | "type": "autogenerated",
5 | "dirName": "."
6 | },
7 | {
8 | "type": "category",
9 | "label": "Resources",
10 | "collapsed": true,
11 | "items": [
12 | {
13 | "type": "link",
14 | "label": "Ignite CLI on Github",
15 | "href": "https://github.com/ignite/cli"
16 | },
17 | {
18 | "type": "link",
19 | "label": "Cosmos SDK Docs",
20 | "href": "https://docs.cosmos.network/"
21 | }
22 | ]
23 | }
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/docs/versioned_sidebars/version-v29-sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "tutorialSidebar": [
3 | {
4 | "type": "autogenerated",
5 | "dirName": "."
6 | },
7 | {
8 | "type": "category",
9 | "label": "Resources",
10 | "collapsed": true,
11 | "items": [
12 | {
13 | "type": "link",
14 | "label": "Ignite CLI on Github",
15 | "href": "https://github.com/ignite/cli"
16 | },
17 | {
18 | "type": "link",
19 | "label": "Ignite Tutorials",
20 | "href": "https://tutorials.ignite.com/"
21 | },
22 | {
23 | "type": "link",
24 | "label": "Cosmos SDK Docs",
25 | "href": "https://docs.cosmos.network/"
26 | }
27 | ]
28 | }
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/docs/versions.json:
--------------------------------------------------------------------------------
1 | [
2 | "v29",
3 | "v28",
4 | "v0.27",
5 | "v0.26",
6 | "v0.25"
7 | ]
8 |
--------------------------------------------------------------------------------
/ignite/cmd/account_delete.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/cliui"
7 | "github.com/ignite/cli/v29/ignite/pkg/cosmosaccount"
8 | )
9 |
10 | func NewAccountDelete() *cobra.Command {
11 | c := &cobra.Command{
12 | Use: "delete [name]",
13 | Short: "Delete an account by name",
14 | Args: cobra.ExactArgs(1),
15 | RunE: accountDeleteHandler,
16 | }
17 |
18 | return c
19 | }
20 |
21 | func accountDeleteHandler(cmd *cobra.Command, args []string) error {
22 | var (
23 | name = args[0]
24 | session = cliui.New(cliui.StartSpinnerWithText(statusDeleting))
25 | )
26 | defer session.End()
27 |
28 | ca, err := cosmosaccount.New(
29 | cosmosaccount.WithKeyringBackend(getKeyringBackend(cmd)),
30 | cosmosaccount.WithHome(getKeyringDir(cmd)),
31 | )
32 | if err != nil {
33 | return err
34 | }
35 |
36 | if err := ca.DeleteByName(name); err != nil {
37 | return err
38 | }
39 |
40 | return session.Printf("Account %s deleted.\n", name)
41 | }
42 |
--------------------------------------------------------------------------------
/ignite/cmd/account_list.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/cosmosaccount"
7 | )
8 |
9 | func NewAccountList() *cobra.Command {
10 | c := &cobra.Command{
11 | Use: "list",
12 | Short: "Show a list of all accounts",
13 | RunE: accountListHandler,
14 | }
15 |
16 | c.Flags().AddFlagSet(flagSetAccountPrefixes())
17 |
18 | return c
19 | }
20 |
21 | func accountListHandler(cmd *cobra.Command, _ []string) error {
22 | ca, err := cosmosaccount.New(
23 | cosmosaccount.WithKeyringBackend(getKeyringBackend(cmd)),
24 | cosmosaccount.WithHome(getKeyringDir(cmd)),
25 | cosmosaccount.WithBech32Prefix(getAddressPrefix(cmd)),
26 | )
27 | if err != nil {
28 | return err
29 | }
30 |
31 | accounts, err := ca.List()
32 | if err != nil {
33 | return err
34 | }
35 |
36 | return printAccounts(cmd, accounts...)
37 | }
38 |
--------------------------------------------------------------------------------
/ignite/cmd/account_show.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/cosmosaccount"
7 | )
8 |
9 | func NewAccountShow() *cobra.Command {
10 | c := &cobra.Command{
11 | Use: "show [name]",
12 | Short: "Show detailed information about a particular account",
13 | Args: cobra.ExactArgs(1),
14 | RunE: accountShowHandler,
15 | }
16 |
17 | c.Flags().AddFlagSet(flagSetAccountPrefixes())
18 |
19 | return c
20 | }
21 |
22 | func accountShowHandler(cmd *cobra.Command, args []string) error {
23 | name := args[0]
24 |
25 | ca, err := cosmosaccount.New(
26 | cosmosaccount.WithKeyringBackend(getKeyringBackend(cmd)),
27 | cosmosaccount.WithHome(getKeyringDir(cmd)),
28 | cosmosaccount.WithBech32Prefix(getAddressPrefix(cmd)),
29 | )
30 | if err != nil {
31 | return err
32 | }
33 |
34 | acc, err := ca.GetByName(name)
35 | if err != nil {
36 | return err
37 | }
38 |
39 | return printAccounts(cmd, acc)
40 | }
41 |
--------------------------------------------------------------------------------
/ignite/cmd/bubblemodel/testdata/testdata.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import (
4 | "context"
5 |
6 | tea "github.com/charmbracelet/bubbletea"
7 |
8 | "github.com/ignite/cli/v29/ignite/pkg/events"
9 | )
10 |
11 | func FooCmd() tea.Msg { return nil }
12 |
13 | type ModelContext struct{}
14 |
15 | func (ModelContext) Context() context.Context { return context.TODO() }
16 | func (ModelContext) SetContext(context.Context) {}
17 |
18 | type DummyEventsProvider struct{}
19 |
20 | func (DummyEventsProvider) Events() <-chan events.Event {
21 | c := make(chan events.Event)
22 | close(c)
23 | return c
24 | }
25 |
--------------------------------------------------------------------------------
/ignite/cmd/chain_lint.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/cliui"
7 | "github.com/ignite/cli/v29/ignite/services/chain"
8 | )
9 |
10 | // NewChainLint returns a lint command to build a blockchain app.
11 | func NewChainLint() *cobra.Command {
12 | c := &cobra.Command{
13 | Use: "lint",
14 | Short: "Lint codebase using golangci-lint",
15 | Long: "The lint command runs the golangci-lint tool to lint the codebase.",
16 | Args: cobra.NoArgs,
17 | RunE: func(cmd *cobra.Command, _ []string) error {
18 | session := cliui.New(cliui.StartSpinnerWithText("Linting..."))
19 | defer session.End()
20 |
21 | chainOption := []chain.Option{
22 | chain.WithOutputer(session),
23 | chain.CollectEvents(session.EventBus()),
24 | }
25 |
26 | c, err := chain.NewWithHomeFlags(cmd, chainOption...)
27 | if err != nil {
28 | return err
29 | }
30 |
31 | return c.Lint(cmd.Context())
32 | },
33 | }
34 |
35 | return c
36 | }
37 |
--------------------------------------------------------------------------------
/ignite/cmd/docs.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/docs"
7 | "github.com/ignite/cli/v29/ignite/pkg/localfs"
8 | "github.com/ignite/cli/v29/ignite/pkg/markdownviewer"
9 | )
10 |
11 | func NewDocs() *cobra.Command {
12 | c := &cobra.Command{
13 | Use: "docs",
14 | Short: "Show Ignite CLI docs",
15 | Args: cobra.NoArgs,
16 | RunE: docsHandler,
17 | }
18 | return c
19 | }
20 |
21 | func docsHandler(*cobra.Command, []string) error {
22 | path, cleanup, err := localfs.SaveTemp(docs.Docs)
23 | if err != nil {
24 | return err
25 | }
26 | defer cleanup()
27 |
28 | return markdownviewer.View(path)
29 | }
30 |
--------------------------------------------------------------------------------
/ignite/cmd/scaffold_type.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/spf13/cobra"
7 |
8 | "github.com/ignite/cli/v29/ignite/services/scaffolder"
9 | )
10 |
11 | // NewScaffoldType returns a new command to scaffold a type.
12 | func NewScaffoldType() *cobra.Command {
13 | c := &cobra.Command{
14 | Use: "type NAME [field:type] ...",
15 | Short: "Type definition",
16 | Long: fmt.Sprintf("Type information\n%s\n", supportFieldTypes),
17 | Example: " ignite scaffold type todo-item priority:int desc:string tags:array.string done:bool",
18 | Args: cobra.MinimumNArgs(1),
19 | PreRunE: migrationPreRunHandler,
20 | RunE: scaffoldTypeHandler,
21 | }
22 |
23 | flagSetPath(c)
24 | flagSetClearCache(c)
25 |
26 | c.Flags().AddFlagSet(flagSetYes())
27 | c.Flags().AddFlagSet(flagSetScaffoldType())
28 |
29 | return c
30 | }
31 |
32 | func scaffoldTypeHandler(cmd *cobra.Command, args []string) error {
33 | return scaffoldType(cmd, args, scaffolder.DryType())
34 | }
35 |
--------------------------------------------------------------------------------
/ignite/cmd/testnet.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 | )
6 |
7 | // NewTestnet returns a command that groups scaffolding related sub commands.
8 | func NewTestnet() *cobra.Command {
9 | c := &cobra.Command{
10 | Use: "testnet [command]",
11 | Short: "Simulate and manage test networks",
12 | Long: `Comprehensive toolset for managing and simulating blockchain test networks. It allows users to either run a test network in place using mainnet data or set up a multi-node environment for more complex testing scenarios. Additionally, it includes a subcommand for simulating the chain, which is useful for fuzz testing and other testing-related tasks.`,
13 | Aliases: []string{"t"},
14 | Args: cobra.ExactArgs(1),
15 | }
16 |
17 | c.AddCommand(
18 | NewTestnetInPlace(),
19 | NewTestnetMultiNode(),
20 | NewChainSimulate(), // While this is not per se a testnet command, it is related to testing.
21 | )
22 |
23 | return c
24 | }
25 |
--------------------------------------------------------------------------------
/ignite/cmd/version.go:
--------------------------------------------------------------------------------
1 | package ignitecmd
2 |
3 | import (
4 | "github.com/spf13/cobra"
5 |
6 | "github.com/ignite/cli/v29/ignite/version"
7 | )
8 |
9 | // NewVersion creates a new version command to show the Ignite CLI version.
10 | func NewVersion() *cobra.Command {
11 | c := &cobra.Command{
12 | Use: "version",
13 | Short: "Print the current build information",
14 | RunE: func(cmd *cobra.Command, _ []string) error {
15 | v, err := version.Long(cmd.Context())
16 | if err != nil {
17 | return err
18 | }
19 | cmd.Println(v)
20 | return nil
21 | },
22 | }
23 | return c
24 | }
25 |
--------------------------------------------------------------------------------
/ignite/config/chain/config_test.go:
--------------------------------------------------------------------------------
1 | package chain_test
2 |
3 | import (
4 | "bytes"
5 | "fmt"
6 | "testing"
7 |
8 | "github.com/stretchr/testify/require"
9 |
10 | "github.com/ignite/cli/v29/ignite/config/chain"
11 | "github.com/ignite/cli/v29/ignite/config/chain/version"
12 | )
13 |
14 | func TestCheckVersion(t *testing.T) {
15 | // Arrange
16 | cfg := bytes.NewBufferString(
17 | fmt.Sprintf("version: %d", chain.LatestVersion),
18 | )
19 |
20 | // Act
21 | err := chain.CheckVersion(cfg)
22 |
23 | // Assert
24 | require.NoError(t, err)
25 | }
26 |
27 | func TestCheckVersionWithOutdatedVersion(t *testing.T) {
28 | // Arrange
29 | cfg := bytes.NewBufferString("version: 0")
30 | wantError := chain.VersionError{}
31 |
32 | // Act
33 | err := chain.CheckVersion(cfg)
34 |
35 | // Assert
36 | require.ErrorAs(t, err, &wantError)
37 | require.Equal(t, wantError.Version, version.Version(0))
38 | }
39 |
--------------------------------------------------------------------------------
/ignite/config/chain/defaults/default.go:
--------------------------------------------------------------------------------
1 | package defaults
2 |
3 | const (
4 | // GRPCAddress is the default GRPC address.
5 | GRPCAddress = "0.0.0.0:9090"
6 |
7 | // GRPCWebAddress is the default GRPC-Web address.
8 | GRPCWebAddress = "0.0.0.0:9091"
9 |
10 | // APIAddress is the default API address.
11 | APIAddress = "0.0.0.0:1317"
12 |
13 | // RPCAddress is the default RPC address.
14 | RPCAddress = "0.0.0.0:26657"
15 |
16 | // P2PAddress is the default P2P address.
17 | P2PAddress = "0.0.0.0:26656"
18 |
19 | // PProfAddress is the default Prof address.
20 | PProfAddress = "0.0.0.0:6060"
21 |
22 | // ProtoDir is the default proto directory path.
23 | ProtoDir = "proto"
24 |
25 | // FaucetHost is the default faucet host.
26 | FaucetHost = "0.0.0.0:4500"
27 | )
28 |
--------------------------------------------------------------------------------
/ignite/config/chain/network/testdata/config.yaml:
--------------------------------------------------------------------------------
1 | version: 1
2 | accounts:
3 | - name: alice
4 | coins:
5 | - 100000000uatom
6 | - 100000000000000000000aevmos
7 | address: cosmos1adn9gxjmrc3hrsdx5zpc9sj2ra7kgqkmphf8yw
8 | - name: bob
9 | coins:
10 | - 5000000000000aevmos
11 | address: cosmos1adn9gxjmrc3hrsdx5zpc9sj2ra7kgqkmphf8yw
12 | genesis:
13 | app_state:
14 | crisis:
15 | constant_fee:
16 | denom: aevmos
17 | evm:
18 | params:
19 | evm_denom: aevmos
20 | gov:
21 | deposit_params:
22 | min_deposit:
23 | - amount: "10000000"
24 | denom: aevmos
25 | mint:
26 | params:
27 | mint_denom: aevmos
28 | staking:
29 | params:
30 | bond_denom: aevmos
31 | chain_id: evmosd_9000-1
32 |
--------------------------------------------------------------------------------
/ignite/config/chain/network/testdata/testdata.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import (
4 | "bytes"
5 | _ "embed"
6 | "testing"
7 |
8 | "github.com/stretchr/testify/require"
9 | "gopkg.in/yaml.v3"
10 |
11 | v1 "github.com/ignite/cli/v29/ignite/config/chain/v1"
12 | )
13 |
14 | //go:embed config.yaml
15 | var ConfigYAML []byte
16 |
17 | func GetConfig(t *testing.T) *v1.Config {
18 | c := &v1.Config{}
19 |
20 | err := yaml.NewDecoder(bytes.NewReader(ConfigYAML)).Decode(c)
21 | require.NoError(t, err)
22 |
23 | err = c.SetDefaults()
24 | require.NoError(t, err)
25 |
26 | return c
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/config/chain/testdata/include1.yml:
--------------------------------------------------------------------------------
1 | validation: sovereign
2 | version: 1
3 | accounts:
4 | - name: bob
5 | coins:
6 | - 10000token
7 | - 100000000stake
8 | faucet:
9 | name: danilo
10 | coins:
11 | - 5token
12 | - 100000stake
13 | client:
14 | typescript:
15 | path: override-1
16 | openapi:
17 | path: docs/static/include1.yml
18 | validators:
19 | - name: alice
20 | bonded: 100000000stake
21 |
--------------------------------------------------------------------------------
/ignite/config/chain/testdata/include2.yml:
--------------------------------------------------------------------------------
1 | version: 1
2 | accounts:
3 | - name: alice
4 | coins:
5 | - 20000token
6 | - 200000000stake
7 | faucet:
8 | name: alice
9 | coins:
10 | - 5token
11 | - 100000stake
12 | client:
13 | typescript:
14 | path: override-2
15 | openapi:
16 | path: docs/static/include2.yml
17 | validators:
18 | - name: validator1
19 | bonded: 100000000stake
--------------------------------------------------------------------------------
/ignite/config/chain/v0/config_test.go:
--------------------------------------------------------------------------------
1 | package v0_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 |
8 | v0 "github.com/ignite/cli/v29/ignite/config/chain/v0"
9 | )
10 |
11 | func TestClone(t *testing.T) {
12 | // Arrange
13 | c := &v0.Config{
14 | Validator: v0.Validator{
15 | Name: "alice",
16 | Staked: "100000000stake",
17 | },
18 | }
19 |
20 | // Act
21 | c2, err := c.Clone()
22 |
23 | // Assert
24 | require.NoError(t, err)
25 | require.Equal(t, c, c2)
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/config/chain/v0/testdata/testdata.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import (
4 | "bytes"
5 | _ "embed"
6 | "testing"
7 |
8 | "github.com/stretchr/testify/require"
9 | "gopkg.in/yaml.v3"
10 |
11 | v0 "github.com/ignite/cli/v29/ignite/config/chain/v0"
12 | )
13 |
14 | //go:embed config.yaml
15 | var ConfigYAML []byte
16 |
17 | func GetConfig(t *testing.T) *v0.Config {
18 | c := &v0.Config{}
19 |
20 | err := yaml.NewDecoder(bytes.NewReader(ConfigYAML)).Decode(c)
21 | require.NoError(t, err)
22 |
23 | err = c.SetDefaults()
24 | require.NoError(t, err)
25 |
26 | return c
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/config/chain/v1/config_convert.go:
--------------------------------------------------------------------------------
1 | package v1
2 |
3 | import (
4 | "github.com/ignite/cli/v29/ignite/config/chain/version"
5 | )
6 |
7 | // ConvertNext implements the conversion of the current config to the next version.
8 | func (c *Config) ConvertNext() (version.Converter, error) {
9 | // v1 is the latest version, there is no need to convert.
10 | return c, nil
11 | }
12 |
--------------------------------------------------------------------------------
/ignite/config/chain/v1/testdata/testdata.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import (
4 | "bytes"
5 | _ "embed"
6 | "testing"
7 |
8 | "github.com/stretchr/testify/require"
9 | "gopkg.in/yaml.v3"
10 |
11 | v1 "github.com/ignite/cli/v29/ignite/config/chain/v1"
12 | )
13 |
14 | //go:embed config.yaml
15 | var ConfigYAML []byte
16 |
17 | func GetConfig(t *testing.T) *v1.Config {
18 | c := &v1.Config{}
19 |
20 | err := yaml.NewDecoder(bytes.NewReader(ConfigYAML)).Decode(c)
21 | require.NoError(t, err)
22 |
23 | err = c.SetDefaults()
24 | require.NoError(t, err)
25 |
26 | return c
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/config/chain/version/version.go:
--------------------------------------------------------------------------------
1 | package version
2 |
3 | import (
4 | "fmt"
5 | "io"
6 | )
7 |
8 | // Version defines the type for the config version number.
9 | type Version uint
10 |
11 | func (v Version) String() string {
12 | return fmt.Sprintf("v%d", v)
13 | }
14 |
15 | // Converter defines the interface required to migrate configurations to newer versions.
16 | type Converter interface {
17 | // Clone clones the config by returning a new copy of the current one.
18 | Clone() (Converter, error)
19 |
20 | // SetDefaults assigns default values to empty config fields.
21 | SetDefaults() error
22 |
23 | // GetVersion returns the config version.
24 | GetVersion() Version
25 |
26 | // ConvertNext converts the config to the next version.
27 | ConvertNext() (Converter, error)
28 |
29 | // Decode decodes the config file from YAML and updates its values.
30 | Decode(io.Reader) error
31 | }
32 |
--------------------------------------------------------------------------------
/ignite/config/config.go:
--------------------------------------------------------------------------------
1 | package config
2 |
3 | import (
4 | "github.com/ignite/cli/v29/ignite/pkg/env"
5 | "github.com/ignite/cli/v29/ignite/pkg/xfilepath"
6 | )
7 |
8 | // DirPath returns the path of configuration directory of Ignite.
9 | var DirPath = xfilepath.Mkdir(env.ConfigDir())
10 |
--------------------------------------------------------------------------------
/ignite/config/plugins/testdata/igniteapps.yml:
--------------------------------------------------------------------------------
1 | apps:
2 | - name: plugin1
3 | path: /path/to/plugin1
4 | - name: plugin2
5 | path: /path/to/plugin2
6 | with:
7 | foo: bar
8 | bar: baz
9 |
--------------------------------------------------------------------------------
/ignite/config/plugins/testdata/invalid/igniteapps.yml:
--------------------------------------------------------------------------------
1 | not yaml !
2 |
--------------------------------------------------------------------------------
/ignite/config/plugins/testdata/localplugin/example/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/ignite/example
2 |
3 | go 1.20
4 |
--------------------------------------------------------------------------------
/ignite/config/plugins/testdata/noconfig/somefile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/config/plugins/testdata/noconfig/somefile
--------------------------------------------------------------------------------
/ignite/config/plugins/testdata/other/igniteapps.yaml:
--------------------------------------------------------------------------------
1 | apps:
2 | - name: plugin1
3 | path: /path/to/plugin1
4 | - name: plugin2
5 | path: /path/to/plugin2
6 | with:
7 | foo: bar
8 | bar: baz
9 |
--------------------------------------------------------------------------------
/ignite/config/testdata/testdata.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import (
4 | "testing"
5 |
6 | chainconfig "github.com/ignite/cli/v29/ignite/config/chain"
7 | networkconfigTestdata "github.com/ignite/cli/v29/ignite/config/chain/network/testdata"
8 | v0testdata "github.com/ignite/cli/v29/ignite/config/chain/v0/testdata"
9 | v1testdata "github.com/ignite/cli/v29/ignite/config/chain/v1/testdata"
10 | "github.com/ignite/cli/v29/ignite/config/chain/version"
11 | )
12 |
13 | var Versions = map[version.Version][]byte{
14 | 0: v0testdata.ConfigYAML,
15 | 1: v1testdata.ConfigYAML,
16 | }
17 |
18 | var NetworkConfig = networkconfigTestdata.ConfigYAML
19 |
20 | func GetLatestConfig(t *testing.T) *chainconfig.Config {
21 | return v1testdata.GetConfig(t)
22 | }
23 |
24 | func GetLatestNetworkConfig(t *testing.T) *chainconfig.Config {
25 | return networkconfigTestdata.GetConfig(t)
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/internal/plugin/testdata/consumer/config/genesis.json:
--------------------------------------------------------------------------------
1 | {
2 | "app_name": "test",
3 | "app_version": "",
4 | "genesis_time": "2024-01-19T10:27:44.742750573Z",
5 | "chain_id": "test",
6 | "initial_height": 1,
7 | "app_hash": null,
8 | "app_state": {}
9 | }
10 |
--------------------------------------------------------------------------------
/ignite/internal/plugin/testdata/consumer/config/priv_validator_key.json:
--------------------------------------------------------------------------------
1 | {
2 | "address": "2D3C15095E5EAA318CAEDE1C2D02C77581584751",
3 | "pub_key": {
4 | "type": "tendermint/PubKeyEd25519",
5 | "value": "uBOT+dDuUvXjJrkfwMNrS4bRT4/O+fBnpwfYpR6n1Wk="
6 | },
7 | "priv_key": {
8 | "type": "tendermint/PrivKeyEd25519",
9 | "value": "HovIzTJTGMrQx5oBikjfypyMZYF9QP5MxS+S+S/3QYq4E5P50O5S9eMmuR/Aw2tLhtFPj8758GenB9ilHqfVaQ=="
10 | }
11 | }
--------------------------------------------------------------------------------
/ignite/internal/plugin/testdata/execute_fail/.gitignore:
--------------------------------------------------------------------------------
1 | execute_fail*
2 |
--------------------------------------------------------------------------------
/ignite/internal/plugin/testdata/execute_ok/.gitignore:
--------------------------------------------------------------------------------
1 | execute_ok*
2 |
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-config-doc/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/ignite/cli/ignite/internal/tools/gen-config-doc/cmd"
8 | )
9 |
10 | func main() {
11 | if err := cmd.NewRootCmd().Execute(); err != nil {
12 | fmt.Println(err)
13 | os.Exit(1)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-config-doc/templates/doc/files/{{Name}}.plush:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | description: Configuration File Example.
4 | title: Configuration File Example
5 | ---
6 |
7 | ## Configuration File Example
8 |
9 | ```yaml title="config.yml"
10 | <%= Config %>
11 | ```
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/ignite/cli/ignite/internal/tools/gen-mig-diffs/cmd"
8 | )
9 |
10 | func main() {
11 | if err := cmd.NewRootCmd().Execute(); err != nil {
12 | fmt.Println(err)
13 | os.Exit(1)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/modified/bar.txt:
--------------------------------------------------------------------------------
1 | unmodified
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/modified/foo.txt:
--------------------------------------------------------------------------------
1 | world
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/modified/new.txt:
--------------------------------------------------------------------------------
1 | new file
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/modified/pkg/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | func main() {}
4 |
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/origin/bar.txt:
--------------------------------------------------------------------------------
1 | unmodified
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/origin/foo.txt:
--------------------------------------------------------------------------------
1 | hello
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/pkg/diff/testdata/origin/pkg/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
--------------------------------------------------------------------------------
/ignite/internal/tools/gen-mig-diffs/templates/doc/files/{{Version}}.md.plush:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: <%= Position %>
3 | title: <%= ToVersion %>
4 | description: <%= ShortDescription %>
5 | ---
6 |
7 | ## **<%= ToVersion %>**
8 |
9 | <%= Description %>
10 | ### **Chain migration diffs**
11 |
12 | <%= Diffs %>
13 | ### **Details**
14 |
15 | - **The CLI tools automatically generated this file**;
16 | - Generated from <%= FromVersion %> to <%= ToVersion %>;
17 | - Generated <%= Date %>;
18 |
--------------------------------------------------------------------------------
/ignite/pkg/cache/options.go:
--------------------------------------------------------------------------------
1 | package cache
2 |
3 | // StorageOptions configures the cache storage.
4 | type StorageOption func(*Storage)
5 |
6 | // WithVersion sets a version for the storage.
7 | // Version is used as prefix for any cached value.
8 | func WithVersion(version string) StorageOption {
9 | return func(o *Storage) {
10 | o.version = version
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/ignite/pkg/chainregistry/doc.go:
--------------------------------------------------------------------------------
1 | // package chainregistry is a package that contains the chain.json and assetlist.json structs from the chain registry.
2 | // Useful when parsing or creating chain.json and assetlist.json files.
3 | package chainregistry
4 |
--------------------------------------------------------------------------------
/ignite/pkg/clictx/clictx.go:
--------------------------------------------------------------------------------
1 | package clictx
2 |
3 | import (
4 | "context"
5 | "os"
6 | "os/signal"
7 | )
8 |
9 | // From creates a new context from ctx that is canceled when an exit signal received.
10 | func From(ctx context.Context) context.Context {
11 | var (
12 | ctxend, cancel = context.WithCancel(ctx)
13 | quit = make(chan os.Signal, 1)
14 | )
15 | signal.Notify(quit, os.Interrupt)
16 | go func() {
17 | <-quit
18 | cancel()
19 | }()
20 | return ctxend
21 | }
22 |
23 | // Do runs fn and waits for its result unless ctx is canceled.
24 | // Returns fn result or canceled context error.
25 | func Do(ctx context.Context, fn func() error) error {
26 | errc := make(chan error)
27 | go func() { errc <- fn() }()
28 | select {
29 | case err := <-errc:
30 | return err
31 | case <-ctx.Done():
32 | return ctx.Err()
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/icons/icon.go:
--------------------------------------------------------------------------------
1 | package icons
2 |
3 | import (
4 | "github.com/ignite/cli/v29/ignite/pkg/cliui/colors"
5 | )
6 |
7 | var (
8 | Earth = "🌍"
9 | CD = "💿"
10 | User = "👤"
11 | Tada = "🎉"
12 | Survey = "💬"
13 | Announcement = "🗣️"
14 |
15 | // OK is an OK mark.
16 | OK = colors.SprintFunc(colors.Green)("✔")
17 | // NotOK is a red cross mark.
18 | NotOK = colors.SprintFunc(colors.Red)("✘")
19 | // Bullet is a bullet mark.
20 | Bullet = colors.SprintFunc(colors.Yellow)("⋆")
21 | // Info is an info mark.
22 | Info = colors.SprintFunc(colors.Yellow)("𝓲")
23 | )
24 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/lineprefixer/lineprefixer_test.go:
--------------------------------------------------------------------------------
1 | package lineprefixer
2 |
3 | import (
4 | "bytes"
5 | "io"
6 | "strings"
7 | "testing"
8 |
9 | "github.com/stretchr/testify/require"
10 | )
11 |
12 | func TestWriter(t *testing.T) {
13 | logs := `hello,
14 | this
15 | is
16 | Starport!`
17 | buf := bytes.Buffer{}
18 | w := NewWriter(&buf, func() string { return "[TENDERMINT] " })
19 | _, err := io.Copy(w, strings.NewReader(logs))
20 | require.NoError(t, err)
21 | require.Equal(t, `[TENDERMINT] hello,
22 | [TENDERMINT] this
23 | [TENDERMINT] is
24 | [TENDERMINT] Starport!`,
25 | buf.String(),
26 | )
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/model/model.go:
--------------------------------------------------------------------------------
1 | package cliuimodel
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/muesli/reflow/indent"
7 | )
8 |
9 | const (
10 | defaultIndent = 2
11 | )
12 |
13 | type (
14 | // ErrorMsg defines a message for errors.
15 | ErrorMsg struct {
16 | Error error
17 | }
18 |
19 | // QuitMsg defines a message for stopping the command.
20 | QuitMsg struct{}
21 | )
22 |
23 | // FormatView formats a model view padding and indentation.
24 | func FormatView(view string) string {
25 | // Indent the view lines
26 | view = indent.String(view, defaultIndent)
27 | // Add top and bottom paddings
28 | return fmt.Sprintf("\n%s\n", view)
29 | }
30 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/model/spinner.go:
--------------------------------------------------------------------------------
1 | package cliuimodel
2 |
3 | import (
4 | "time"
5 |
6 | "github.com/charmbracelet/bubbles/spinner"
7 | "github.com/charmbracelet/lipgloss"
8 | )
9 |
10 | // ColorSpinner defines the foreground color for the spinner.
11 | const ColorSpinner = "#3465A4"
12 |
13 | // Spinner defines the spinner model animation.
14 | var Spinner = spinner.Spinner{
15 | Frames: []string{"◢ ", "◣ ", "◤ ", "◥ "},
16 | FPS: time.Second / 5,
17 | }
18 |
19 | // NewSpinner returns a new spinner model.
20 | func NewSpinner() spinner.Model {
21 | s := spinner.New()
22 | s.Spinner = Spinner
23 | s.Style = lipgloss.NewStyle().Foreground(lipgloss.Color(ColorSpinner))
24 | return s
25 | }
26 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/prefixgen/prefixgen_test.go:
--------------------------------------------------------------------------------
1 | package prefixgen
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 | )
8 |
9 | func TestGen(t *testing.T) {
10 | cases := []struct {
11 | expected string
12 | given string
13 | }{
14 | {"[TENDERMINT] ", New("Tendermint", Common()...).Gen()},
15 | {"Tendermint", New("Tendermint").Gen()},
16 | {"appd", New("%sd").Gen("app")},
17 | }
18 | for _, tt := range cases {
19 | t.Run(tt.expected, func(t *testing.T) {
20 | require.Equal(t, tt.expected, tt.given)
21 | })
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ignite/pkg/cliui/view/errorview/error.go:
--------------------------------------------------------------------------------
1 | package errorview
2 |
3 | import (
4 | "strings"
5 |
6 | "github.com/muesli/reflow/wordwrap"
7 |
8 | "github.com/ignite/cli/v29/ignite/pkg/cliui/colors"
9 | )
10 |
11 | func NewError(err error) Error {
12 | return Error{err}
13 | }
14 |
15 | type Error struct {
16 | Err error
17 | }
18 |
19 | func (e Error) String() string {
20 | s := strings.TrimSpace(e.Err.Error())
21 |
22 | w := wordwrap.NewWriter(80)
23 | w.Breakpoints = []rune{' '}
24 | _, _ = w.Write([]byte(s))
25 | _ = w.Close()
26 |
27 | return colors.Error(w.String())
28 | }
29 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/app/testdata/app_generic.go:
--------------------------------------------------------------------------------
1 | package foo
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/runtime"
5 | sdk "github.com/cosmos/cosmos-sdk/types"
6 | abci "github.com/tendermint/tendermint/abci/types"
7 | )
8 |
9 | type Foo[T any] struct {
10 | *runtime.App
11 |
12 | FooKeeper foo.keeper
13 | i T
14 | }
15 |
16 | func (f Foo[T]) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
17 | return f.App.BeginBlocker(ctx, req)
18 | }
19 |
20 | func (f Foo[T]) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
21 | return f.App.EndBlocker(ctx, req)
22 | }
23 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/app/testdata/app_minimal.go:
--------------------------------------------------------------------------------
1 | package foo
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/baseapp"
5 | sdk "github.com/cosmos/cosmos-sdk/types"
6 | abci "github.com/tendermint/tendermint/abci/types"
7 | )
8 |
9 | type Foo struct {
10 | *baseapp.BaseApp
11 |
12 | FooKeeper foo.keeper
13 | }
14 |
15 | func (f Foo) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
16 | return f.BaseApp.BeginBlocker(ctx, req)
17 | }
18 |
19 | func (f Foo) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
20 | return f.BaseApp.EndBlocker(ctx, req)
21 | }
22 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/app/testdata/no_app.go:
--------------------------------------------------------------------------------
1 | package foo
2 |
3 | type Bar struct {
4 | FooKeeper foo.keeper
5 | }
6 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/app/testdata/two_app.go:
--------------------------------------------------------------------------------
1 | package foo
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/baseapp"
5 | "github.com/cosmos/cosmos-sdk/runtime"
6 | sdk "github.com/cosmos/cosmos-sdk/types"
7 | abci "github.com/tendermint/tendermint/abci/types"
8 | )
9 |
10 | type Foo struct {
11 | *runtime.App
12 |
13 | FooKeeper foo.keeper
14 | }
15 |
16 | func (f Foo) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
17 | return f.App.BeginBlocker(ctx, req)
18 | }
19 |
20 | func (f Foo) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
21 | return f.App.EndBlocker(ctx, req)
22 | }
23 |
24 | type Bar struct {
25 | *baseapp.BaseApp
26 |
27 | FooKeeper foo.keeper
28 | }
29 |
30 | func (f Bar) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
31 | return app.mm.BeginBlock(ctx, req)
32 | }
33 |
34 | func (f Bar) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
35 | return app.mm.EndBlock(ctx, req)
36 | }
37 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/options.go:
--------------------------------------------------------------------------------
1 | package module
2 |
3 | // DiscoverOption configures calls to Discovery function.
4 | type DiscoverOption func(*discoverOptions)
5 |
6 | type discoverOptions struct {
7 | protoDir, sdkDir string
8 | }
9 |
10 | // WithProtoDir sets the relative proto directory path.
11 | func WithProtoDir(path string) DiscoverOption {
12 | return func(o *discoverOptions) {
13 | o.protoDir = path
14 | }
15 | }
16 |
17 | // WithSDKDir sets the absolute directory path to the Cosmos SDK Go package.
18 | func WithSDKDir(path string) DiscoverOption {
19 | return func(o *discoverOptions) {
20 | o.sdkDir = path
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/earth/app/app.go:
--------------------------------------------------------------------------------
1 | package app
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/runtime"
5 | "github.com/cosmos/cosmos-sdk/types/module"
6 | authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
7 | bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
8 | govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
9 | stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
10 | marskeeper "github.com/tendermint/planet/x/mars/keeper"
11 | )
12 |
13 | type Foo struct {
14 | *runtime.App
15 |
16 | AuthKeeper authkeeper.Keeper
17 | BankKeeper bankkeeper.Keeper
18 | StakingKeeper stakingkeeper.Keeper
19 | GovKeeper govkeeper.Keeper
20 | MarsKeeper marskeeper.Keeper
21 | }
22 |
23 | var ModuleBasics = module.NewBasicManager(foo.AppModuleBasic{})
24 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/earth/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/tendermint/planet
2 |
3 | go 1.18
4 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/earth/x/mars/keeper/query_my_query.go:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 |
6 | "github.com/tendermint/planet/x/mars/types"
7 | )
8 |
9 | type Keeper struct{}
10 |
11 | func (k Keeper) MyQuery(goCtx context.Context, req *types.QueryMyQueryRequest) (*types.QueryMyQueryResponse, error) {
12 | return nil, nil
13 | }
14 |
15 | func (k Keeper) Foo(goCtx context.Context, req *types.QueryFooRequest) (*types.QueryFooResponse, error) {
16 | return nil, nil
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/earth/x/mars/types/types.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | type (
4 | QueryMyQueryRequest struct{}
5 | QueryMyQueryResponse struct{}
6 | QueryFooRequest struct{}
7 | QueryFooResponse struct{}
8 | )
9 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/planet/app/app.go:
--------------------------------------------------------------------------------
1 | package app
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/baseapp"
5 | "github.com/cosmos/cosmos-sdk/types/module"
6 | authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
7 | bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
8 | govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
9 | stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
10 | marskeeper "github.com/tendermint/planet/x/mars/keeper"
11 | )
12 |
13 | type Foo struct {
14 | baseapp.BaseApp
15 |
16 | AuthKeeper authkeeper.Keeper
17 | BankKeeper bankkeeper.Keeper
18 | StakingKeeper stakingkeeper.Keeper
19 | GovKeeper govkeeper.Keeper
20 | MarsKeeper marskeeper.Keeper
21 | }
22 |
23 | var ModuleBasics = module.NewBasicManager(mars.AppModuleBasic{})
24 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/planet/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/tendermint/planet
2 |
3 | go 1.16
4 |
5 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/planet/x/mars/keeper/query_my_query.go:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 |
6 | "github.com/tendermint/planet/x/mars/types"
7 | )
8 |
9 | type Keeper struct{}
10 |
11 | func (k Keeper) MyQuery(goCtx context.Context, req *types.QueryMyQueryRequest) (*types.QueryMyQueryResponse, error) {
12 | return nil, nil
13 | }
14 |
15 | func (k Keeper) Foo(goCtx context.Context, req *types.QueryFooRequest) (*types.QueryFooResponse, error) {
16 | return nil, nil
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosanalysis/module/testdata/planet/x/mars/types/types.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | type (
4 | QueryMyQueryRequest struct{}
5 | QueryMyQueryResponse struct{}
6 | QueryFooRequest struct{}
7 | QueryFooResponse struct{}
8 | )
9 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosclient/gasometer.go:
--------------------------------------------------------------------------------
1 | package cosmosclient
2 |
3 | import (
4 | gogogrpc "github.com/cosmos/gogoproto/grpc"
5 |
6 | "github.com/cosmos/cosmos-sdk/client/tx"
7 | sdktypes "github.com/cosmos/cosmos-sdk/types"
8 | txtypes "github.com/cosmos/cosmos-sdk/types/tx"
9 | )
10 |
11 | // gasometer implements the Gasometer interface.
12 | type gasometer struct{}
13 |
14 | func (gasometer) CalculateGas(clientCtx gogogrpc.ClientConn, txf tx.Factory, msgs ...sdktypes.Msg) (*txtypes.SimulateResponse, uint64, error) {
15 | return tx.CalculateGas(clientCtx, txf, msgs...)
16 | }
17 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosclient/signer.go:
--------------------------------------------------------------------------------
1 | package cosmosclient
2 |
3 | import (
4 | "context"
5 |
6 | "github.com/cosmos/cosmos-sdk/client"
7 | "github.com/cosmos/cosmos-sdk/client/tx"
8 | )
9 |
10 | var _ Signer = signer{}
11 |
12 | // signer implements the Signer interface.
13 | type signer struct{}
14 |
15 | func (signer) Sign(ctx context.Context, txf tx.Factory, name string, txBuilder client.TxBuilder, overwriteSig bool) error {
16 | return tx.Sign(ctx, txf, name, txBuilder, overwriteSig)
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosclient/tx_options.go:
--------------------------------------------------------------------------------
1 | package cosmosclient
2 |
3 | // TxOptions contains options for creating a transaction.
4 | // It is used by the CreateTxWithOptions method.
5 | type TxOptions struct {
6 | // Memo is the memo to be used for the transaction.
7 | Memo string
8 |
9 | // GasLimit is the gas limit to be used for the transaction.
10 | // If GasLimit is set to 0, the gas limit will be automatically calculated.
11 | GasLimit uint64
12 |
13 | // Fees is the fees to be used for the transaction.
14 | Fees string
15 | }
16 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosfaucet/http_openapi.go:
--------------------------------------------------------------------------------
1 | package cosmosfaucet
2 |
3 | import (
4 | _ "embed" // used for embedding openapi assets.
5 | "html/template"
6 | "net/http"
7 | )
8 |
9 | const (
10 | fileNameOpenAPISpec = "openapi/openapi.yml.tmpl"
11 | )
12 |
13 | //go:embed openapi/openapi.yml.tmpl
14 | var bytesOpenAPISpec []byte
15 |
16 | var tmplOpenAPISpec = template.Must(template.New(fileNameOpenAPISpec).Parse(string(bytesOpenAPISpec)))
17 |
18 | type openAPIData struct {
19 | ChainID string
20 | APIAddress string
21 | }
22 |
23 | func (f Faucet) openAPISpecHandler(w http.ResponseWriter, _ *http.Request) {
24 | _ = tmplOpenAPISpec.Execute(w, f.openAPIData)
25 | }
26 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/generate_typescript_test.go:
--------------------------------------------------------------------------------
1 | package cosmosgen_test
2 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/composable-root/useClient.ts.tpl:
--------------------------------------------------------------------------------
1 | import { Client } from '{{ .PackageNS }}-client-ts'
2 | import { env } from '../env';
3 |
4 | const useClientInstance = () => {
5 | const client = new Client(env);
6 | return client;
7 | };
8 | let clientInstance: ReturnType;
9 |
10 | export const useClient = () => {
11 | if (!clientInstance) {
12 | clientInstance = useClientInstance();
13 | }
14 | return clientInstance;
15 | };
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/module/index.ts.tpl:
--------------------------------------------------------------------------------
1 | import IgntModule from './module';
2 | import { txClient, queryClient, registry } from './module';
3 | import { msgTypes } from './registry';
4 |
5 | export * from "./types";
6 | export { IgntModule, msgTypes, txClient, queryClient, registry };
7 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/module/registry.ts.tpl:
--------------------------------------------------------------------------------
1 | import { GeneratedType } from "@cosmjs/proto-signing";
2 | {{ range .Module.Msgs }}import { {{ .Name }} } from "{{ resolveFile .FilePath }}";
3 | {{ end }}
4 | const msgTypes: Array<[string, GeneratedType]> = [
5 | {{ range .Module.Msgs }}["/{{ .URI }}", {{ .Name }}],
6 | {{ end }}
7 | ];
8 |
9 | export { msgTypes }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/module/types.ts.tpl:
--------------------------------------------------------------------------------
1 | {{ range .Module.Types }}import { {{ .Name }} } from "{{ resolveFile .FilePath }}"
2 | {{ end }}
3 |
4 | export {
5 | {{ range .Module.Types }}{{ .Name }},
6 | {{ end }}
7 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/env.ts.tpl:
--------------------------------------------------------------------------------
1 | import { OfflineSigner } from "@cosmjs/proto-signing";
2 |
3 | export interface Env {
4 | apiURL: string
5 | rpcURL: string
6 | prefix?: string
7 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/helpers.ts.tpl:
--------------------------------------------------------------------------------
1 | export type Constructor = new (...args: any[]) => T;
2 |
3 | export type AnyFunction = (...args: any) => any;
4 |
5 | export type UnionToIntersection =
6 | (Union extends any
7 | ? (argument: Union) => void
8 | : never
9 | ) extends (argument: infer Intersection) => void
10 | ? Intersection
11 | : never;
12 |
13 | export type Return =
14 | T extends AnyFunction
15 | ? ReturnType
16 | : T extends AnyFunction[]
17 | ? UnionToIntersection>
18 | : never
19 |
20 |
21 | export const MissingWalletError = new Error("wallet is required");
22 |
23 | export function getStructure(template) {
24 | let structure = { fields: [] as Array}
25 | for (const [key, value] of Object.entries(template)) {
26 | let field: any = {}
27 | field.name = key
28 | field.type = typeof value
29 | structure.fields.push(field)
30 | }
31 | return structure
32 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/index.ts.tpl:
--------------------------------------------------------------------------------
1 | // Generated by Ignite ignite.com/cli
2 | import { Registry } from '@cosmjs/proto-signing'
3 | import { IgniteClient } from "./client";
4 | import { MissingWalletError } from "./helpers";
5 | {{ range .Modules }}import { IgntModule as {{ camelCaseUpperSta .Pkg.Name }}, msgTypes as {{ camelCaseUpperSta .Pkg.Name }}MsgTypes } from './{{ .Pkg.Name }}'
6 | {{ end }}
7 |
8 | const Client = IgniteClient.plugin([
9 | {{ range $i,$module :=.Modules }}{{ if (gt $i 0) }}, {{ end }}{{ camelCaseUpperSta $module.Pkg.Name }}{{ end }}
10 | ]);
11 |
12 | const registry = new Registry([
13 | {{ range .Modules }}...{{ camelCaseUpperSta .Pkg.Name }}MsgTypes,
14 | {{ end }}
15 | ])
16 |
17 | export {
18 | Client,
19 | registry,
20 | MissingWalletError
21 | }
22 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/modules.ts.tpl:
--------------------------------------------------------------------------------
1 | import { IgniteClient } from "./client";
2 | import { GeneratedType } from "@cosmjs/proto-signing";
3 |
4 | export type IgntModuleInterface = { [key: string]: any }
5 | export type IgntModule = (instance: IgniteClient) => { module: IgntModuleInterface, registry: [string, GeneratedType][] }
6 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/tsconfig.json.tpl:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "module": "ES2020",
5 | "moduleResolution": "node",
6 | "outDir": "./lib",
7 | "declaration": true,
8 | "allowSyntheticDefaultImports": true,
9 | "esModuleInterop": false,
10 | "strict": false,
11 | "skipLibCheck": true
12 | }
13 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/templates/root/types.d.ts.tpl:
--------------------------------------------------------------------------------
1 | import { Keplr, Window as KeplrWindow } from '@keplr-wallet/types';
2 |
3 | declare global {
4 | interface KeplrIntereactionOptions {
5 | readonly sign?: KeplrSignOptions;
6 | }
7 |
8 | export interface KeplrSignOptions {
9 | readonly preferNoSetFee?: boolean;
10 | readonly preferNoSetMemo?: boolean;
11 | readonly disableBalanceCheck?: boolean;
12 | }
13 | interface CustomKeplr extends Keplr {
14 | enable(chainId: string | string[]): Promise;
15 |
16 | defaultOptions: KeplrIntereactionOptions;
17 | }
18 | interface Window extends KeplrWindow {
19 | keplr: CustomKeplr;
20 | }
21 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosgen/webtemplates.go:
--------------------------------------------------------------------------------
1 | package cosmosgen
2 |
3 | import (
4 | webtemplates "github.com/ignite/web"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/localfs"
7 | )
8 |
9 | // React scaffolds a React app for a chain.
10 | func React(path string) error {
11 | return localfs.Save(webtemplates.ReactBoilerplate(), path)
12 | }
13 |
14 | // Vue scaffolds a Vue.js app for a chain.
15 | func Vue(path string) error {
16 | return localfs.Save(webtemplates.VueBoilerplate(), path)
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmostestutil/sample/sample.go:
--------------------------------------------------------------------------------
1 | package cosmostestutilsample
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
5 | sdk "github.com/cosmos/cosmos-sdk/types"
6 | )
7 |
8 | // AccAddress returns a sample account address.
9 | func AccAddress() string {
10 | pk := ed25519.GenPrivKey().PubKey()
11 | addr := pk.Address()
12 | return sdk.AccAddress(addr).String()
13 | }
14 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmostestutil/sample/sample_test.go:
--------------------------------------------------------------------------------
1 | package cosmostestutilsample
2 |
3 | import (
4 | "testing"
5 |
6 | addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
7 | "github.com/stretchr/testify/require"
8 | )
9 |
10 | func TestAccAddress(t *testing.T) {
11 | got := AccAddress()
12 | require.NotEmpty(t, got)
13 | exampleAccountAddress := addresscodec.NewBech32Codec("cosmos")
14 | _, err := exampleAccountAddress.StringToBytes(got)
15 | require.NoError(t, err)
16 | }
17 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosutil/address.go:
--------------------------------------------------------------------------------
1 | package cosmosutil
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/types/bech32"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/errors"
7 | )
8 |
9 | // ChangeAddressPrefix returns the address with another prefix.
10 | func ChangeAddressPrefix(address, newPrefix string) (string, error) {
11 | if newPrefix == "" {
12 | return "", errors.New("empty prefix")
13 | }
14 | _, pubKey, err := bech32.DecodeAndConvert(address)
15 | if err != nil {
16 | return "", err
17 | }
18 | return bech32.ConvertAndEncode(newPrefix, pubKey)
19 | }
20 |
21 | // GetAddressPrefix returns the bech 32 prefix used by the address.
22 | func GetAddressPrefix(address string) (string, error) {
23 | prefix, _, err := bech32.DecodeAndConvert(address)
24 | return prefix, err
25 | }
26 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosutil/config.go:
--------------------------------------------------------------------------------
1 | package cosmosutil
2 |
3 | const (
4 | ChainConfigDir = "config"
5 | )
6 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosutil/genesis/genesis_test.go:
--------------------------------------------------------------------------------
1 | package genesis_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 |
8 | cosmosgenesis "github.com/ignite/cli/v29/ignite/pkg/cosmosutil/genesis"
9 | )
10 |
11 | func TestModuleParamField(t *testing.T) {
12 | tests := []struct {
13 | name string
14 | module string
15 | param string
16 | want string
17 | }{
18 | {
19 | name: "valid 1",
20 | module: "foo",
21 | param: "bar",
22 | want: "app_state.foo.params.bar",
23 | },
24 | {
25 | name: "valid 2",
26 | module: "bar",
27 | param: "foo",
28 | want: "app_state.bar.params.foo",
29 | },
30 | }
31 |
32 | for _, tc := range tests {
33 | t.Run(tc.name, func(t *testing.T) {
34 | got := cosmosgenesis.ModuleParamField(tc.module, tc.param)
35 | require.Equal(t, tc.want, got)
36 | })
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/ignite/pkg/cosmosutil/testdata/gentx_invalid.json:
--------------------------------------------------------------------------------
1 | {
2 | "amount": [],
3 | "gas_limit": "200000",
4 | "granter": "",
5 | "payer": ""
6 | }
--------------------------------------------------------------------------------
/ignite/pkg/cosmosver/detect_test.go:
--------------------------------------------------------------------------------
1 | package cosmosver_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 |
8 | "github.com/ignite/cli/v29/ignite/pkg/cosmosver"
9 | )
10 |
11 | func TestDetect(t *testing.T) {
12 | _, err := cosmosver.Detect(".")
13 | require.Error(t, err)
14 |
15 | v, err := cosmosver.Detect("testdata/chain")
16 | require.NoError(t, err)
17 | require.Equal(t, "v0.47.3", v.Version)
18 |
19 | v, err = cosmosver.Detect("testdata/chain-sdk-fork")
20 | require.NoError(t, err)
21 | require.Equal(t, "v0.50.1-rollkit-v0.11.6-no-fraud-proofs", v.Version)
22 |
23 | v, err = cosmosver.Detect("testdata/chain-sdk-local-fork")
24 | require.NoError(t, err)
25 | require.Equal(t, "v0.50.2", v.Version)
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/pkg/ctxticker/ctxticker.go:
--------------------------------------------------------------------------------
1 | package ctxticker
2 |
3 | import (
4 | "context"
5 | "time"
6 | )
7 |
8 | // Do calls fn every d until ctx canceled or fn returns with a non-nil error.
9 | func Do(ctx context.Context, d time.Duration, fn func() error) error {
10 | ticker := time.NewTicker(d)
11 | defer ticker.Stop()
12 |
13 | for {
14 | select {
15 | case <-ctx.Done():
16 | return ctx.Err()
17 |
18 | case <-ticker.C:
19 | if err := fn(); err != nil {
20 | return err
21 | }
22 | }
23 | }
24 | }
25 |
26 | // DoNow is same as Do except it makes +1 call to fn on start.
27 | func DoNow(ctx context.Context, d time.Duration, fn func() error) error {
28 | if err := fn(); err != nil {
29 | return err
30 | }
31 | return Do(ctx, d, fn)
32 | }
33 |
--------------------------------------------------------------------------------
/ignite/pkg/ctxticker/ctxticker_test.go:
--------------------------------------------------------------------------------
1 | package ctxticker
2 |
3 | import (
4 | "context"
5 | "testing"
6 | "time"
7 |
8 | "github.com/stretchr/testify/require"
9 |
10 | "github.com/ignite/cli/v29/ignite/pkg/errors"
11 | )
12 |
13 | func TestDoNow(t *testing.T) {
14 | ctx, cancel := context.WithCancel(context.Background())
15 | var callCount int
16 |
17 | require.Error(t, context.Canceled, DoNow(ctx, time.Millisecond, func() error {
18 | if callCount == 3 {
19 | cancel()
20 | return nil
21 | }
22 | callCount++
23 | return nil
24 | }))
25 |
26 | require.True(t, callCount >= 3)
27 | }
28 |
29 | func TestDoNowError(t *testing.T) {
30 | errDone := errors.New("done")
31 | var callCount int
32 |
33 | require.Error(t, errDone, DoNow(context.Background(), time.Millisecond, func() error {
34 | if callCount == 3 {
35 | return errDone
36 | }
37 | callCount++
38 | return nil
39 | }))
40 |
41 | require.True(t, callCount >= 3)
42 | }
43 |
--------------------------------------------------------------------------------
/ignite/pkg/dircache/testdata/subdata/subfile:
--------------------------------------------------------------------------------
1 | subtest
--------------------------------------------------------------------------------
/ignite/pkg/dircache/testdata/testfile:
--------------------------------------------------------------------------------
1 | test
--------------------------------------------------------------------------------
/ignite/pkg/goanalysis/testdata/fieldexist.go:
--------------------------------------------------------------------------------
1 | package goanalysis
2 |
3 | type (
4 | emptyStruct struct{}
5 | fooStruct struct {
6 | name string
7 | }
8 | bazStruct struct {
9 | name string
10 | title string
11 | description string
12 | }
13 | )
14 |
--------------------------------------------------------------------------------
/ignite/pkg/goanalysis/testdata/replace.go:
--------------------------------------------------------------------------------
1 | package testdata
2 |
3 | import "fmt"
4 |
5 | func fooTest() {
6 | n := "test new method"
7 | bla := fmt.Sprintf("test new - %s", n)
8 | fmt.
9 | Println(bla)
10 | }
11 |
12 | func BazTest() {
13 | foo := 100
14 | bar := fmt.Sprintf("test - %d", foo)
15 | fmt.Println(bar)
16 | }
17 |
--------------------------------------------------------------------------------
/ignite/pkg/goanalysis/testdata/varexist:
--------------------------------------------------------------------------------
1 | package goanalysis
2 |
3 | import (
4 | "context"
5 | "errors"
6 | "path/filepath"
7 |
8 | _ "embed"
9 | _ "mvdan.cc/gofumpt"
10 | )
11 |
12 | const (
13 | fooConst = "foo"
14 | )
15 |
16 | type (
17 | fooStruct struct {
18 | name string
19 | }
20 | )
21 |
22 | var (
23 | fooVar = filepath.Join("test", "join")
24 | fooStructVar = fooStruct{}
25 | )
26 |
27 | var (
28 | errorFooVar = errors.New("error foo")
29 | bazStructVar = fooStruct{}
30 | errorBarVar = errors.New("error bar")
31 | )
32 |
33 | func fooMethod(foo string) error {
34 | return nil
35 | }
36 |
37 | func barMethod(foo string) context.Context {
38 | contextVar := context.Background()
39 | return contextVar
40 | }
41 |
42 | func bazMethod(foo string) {
43 | if list := filepath.SplitList("list"); list == nil {
44 | return errors.New("error baz")
45 | }
46 | }
--------------------------------------------------------------------------------
/ignite/pkg/gomodule/testdata/local-module-fork/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/ignite/modules
2 |
--------------------------------------------------------------------------------
/ignite/pkg/gomodule/testdata/module/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/ignite/cli/ignite/pkg/gomodule
2 |
3 | go 1.23
4 |
5 | require (
6 | github.com/gorilla/mux v1.8.0
7 | github.com/stretchr/testify v1.8.2
8 | github.com/ignite/modules v1.0.0
9 | )
10 |
11 | replace github.com/ignite/modules => ../local-module-fork
12 |
--------------------------------------------------------------------------------
/ignite/pkg/jsonfile/testdata/example.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/jsonfile/testdata/example.tar.gz
--------------------------------------------------------------------------------
/ignite/pkg/jsonfile/testdata/jsonfile.json:
--------------------------------------------------------------------------------
1 | {
2 | "app_state": {
3 | "bank": {
4 | "balances": [
5 | {
6 | "address": "cosmos1dd246yq6z5vzjz9gh8cff46pll75yyl8ygndsj",
7 | "coins": [
8 | {
9 | "amount": "95000000",
10 | "denom": "stake"
11 | }
12 | ]
13 | }
14 | ]
15 | }
16 | },
17 | "chain_id": "earth-1",
18 | "consensus_params": {
19 | "block": {
20 | "max_bytes": "22020096",
21 | "max_gas": "-1",
22 | "time_iota_ms": 1000,
23 | "best_blocks": [
24 | 100,
25 | 20,
26 | 11,
27 | 4,
28 | 2
29 | ]
30 | },
31 | "evidence": {
32 | "max_age_duration": "172800000000000",
33 | "max_age_num_blocks": "100000",
34 | "max_bytes": 1048576
35 | }
36 | },
37 | "genesis_time": "2021-11-12T02:08:12.522572Z",
38 | "initial_height": "1",
39 | "launched": true
40 | }
--------------------------------------------------------------------------------
/ignite/pkg/localfs/reset.go:
--------------------------------------------------------------------------------
1 | package localfs
2 |
3 | import (
4 | "io/fs"
5 | "os"
6 | )
7 |
8 | // MkdirAllReset is same as os.MkdirAll except it deletes path before creating it.
9 | func MkdirAllReset(path string, perm fs.FileMode) error {
10 | if err := os.RemoveAll(path); err != nil {
11 | return err
12 | }
13 | return os.MkdirAll(path, perm)
14 | }
15 |
--------------------------------------------------------------------------------
/ignite/pkg/openapiconsole/console.go:
--------------------------------------------------------------------------------
1 | package openapiconsole
2 |
3 | import (
4 | "embed"
5 | "html/template"
6 | "net/http"
7 | )
8 |
9 | //go:embed index.tpl
10 | var index embed.FS
11 |
12 | // Handler returns an http handler that servers OpenAPI console for an OpenAPI spec at specURL.
13 | func Handler(title, specURL string) http.HandlerFunc {
14 | t, _ := template.ParseFS(index, "index.tpl")
15 |
16 | return func(w http.ResponseWriter, _ *http.Request) {
17 | _ = t.Execute(w, struct {
18 | Title string
19 | URL string
20 | }{
21 | title,
22 | specURL,
23 | })
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ignite/pkg/openapiconsole/index.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ .Title }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ignite/pkg/protoanalysis/cache.go:
--------------------------------------------------------------------------------
1 | package protoanalysis
2 |
3 | import "sync"
4 |
5 | type Cache struct {
6 | mu sync.RWMutex
7 | pkgs map[string]Packages // proto dir path-proto packages pair.
8 | }
9 |
10 | func NewCache() *Cache {
11 | return &Cache{
12 | pkgs: make(map[string]Packages),
13 | }
14 | }
15 |
16 | func (c *Cache) Get(key string) (Packages, bool) {
17 | c.mu.RLock()
18 | pkgs, ok := c.pkgs[key]
19 | c.mu.RUnlock()
20 | return pkgs, ok
21 | }
22 |
23 | func (c *Cache) Add(key string, value Packages) {
24 | c.mu.Lock()
25 | c.pkgs[key] = value
26 | c.mu.Unlock()
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/pkg/protoanalysis/protoutil/parser.go:
--------------------------------------------------------------------------------
1 | package protoutil
2 |
3 | import (
4 | "io"
5 | "os"
6 | "strings"
7 |
8 | "github.com/emicklei/proto"
9 | "github.com/emicklei/proto-contrib/pkg/protofmt"
10 | )
11 |
12 | // ParseProtoPath opens the file denoted by path and parses it
13 | // into a proto file.
14 | func ParseProtoPath(path string) (pf *proto.Proto, err error) {
15 | f, err := os.Open(path)
16 | if err != nil {
17 | return nil, err
18 | }
19 | defer f.Close()
20 |
21 | return proto.NewParser(f).Parse()
22 | }
23 |
24 | // ParseProtoFile parses the given file.
25 | func ParseProtoFile(r io.Reader) (*proto.Proto, error) {
26 | return proto.NewParser(r).Parse()
27 | }
28 |
29 | // Print formats the proto file using proto-contrib/pkg/protofmt.
30 | // This does have certain opinions on how formatting is done.
31 | func Print(pf *proto.Proto) string {
32 | output := new(strings.Builder)
33 | protofmt.NewFormatter(output, " ").Format(pf) // 2 spaces
34 |
35 | return output.String()
36 | }
37 |
--------------------------------------------------------------------------------
/ignite/pkg/protoanalysis/testdata/internal/foo.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
--------------------------------------------------------------------------------
/ignite/pkg/protoanalysis/testdata/nested_messages/nested_messages.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | package nested_messages;
4 |
5 | message A {
6 | message B {
7 | message C {
8 | hello string = 1;
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ignite/pkg/randstr/randstr.go:
--------------------------------------------------------------------------------
1 | package randstr
2 |
3 | import (
4 | "crypto/rand"
5 | "math/big"
6 | )
7 |
8 | var letterRunes = []rune("abcdefghijklmnopqrstuvwxyz")
9 |
10 | // Runes generates a random string with n length from runes.
11 | func Runes(n int) string {
12 | b := make([]rune, n)
13 | for i := range b {
14 | num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterRunes))))
15 | b[i] = letterRunes[num.Int64()]
16 | }
17 | return string(b)
18 | }
19 |
--------------------------------------------------------------------------------
/ignite/pkg/safeconverter/safeconverter.go:
--------------------------------------------------------------------------------
1 | package safeconverter
2 |
3 | type SafeToConvertToInt interface {
4 | uintptr | uint | uint32 | uint64 | int | int32 | int64
5 | }
6 |
7 | func ToInt[T SafeToConvertToInt](x T) int {
8 | return int(x)
9 | }
10 |
11 | func ToInt64[T SafeToConvertToInt](x T) int64 {
12 | return int64(x)
13 | }
14 |
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/example-empty.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/tarball/testdata/example-empty.tar.gz
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/example-root.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/tarball/testdata/example-root.tar.gz
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/example-subfolder.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/tarball/testdata/example-subfolder.tar.gz
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "chain_id": "gaia-1",
3 | "genesis_time": "2022-03-24T21:00:36.557659Z"
4 | }
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/example.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/tarball/testdata/example.tar.gz
--------------------------------------------------------------------------------
/ignite/pkg/tarball/testdata/invalid_file:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/tarball/testdata/invalid_file
--------------------------------------------------------------------------------
/ignite/pkg/validation/errors.go:
--------------------------------------------------------------------------------
1 | package validation
2 |
3 | // Error must be implemented by errors that provide validation info.
4 | type Error interface {
5 | error
6 | ValidationInfo() string
7 | }
8 |
--------------------------------------------------------------------------------
/ignite/pkg/xast/testdata/inspect/test.go:
--------------------------------------------------------------------------------
1 | package test
2 |
3 | type T struct {
4 | A int
5 | }
6 |
--------------------------------------------------------------------------------
/ignite/pkg/xast/testdata/parseDir/file.go:
--------------------------------------------------------------------------------
1 | package file
2 |
--------------------------------------------------------------------------------
/ignite/pkg/xast/testdata/parseDir/file_test.go:
--------------------------------------------------------------------------------
1 | package file_test
2 |
--------------------------------------------------------------------------------
/ignite/pkg/xembed/testdata/subtestdata/subfile.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/xembed/testdata/subtestdata/subfile.txt
--------------------------------------------------------------------------------
/ignite/pkg/xembed/testdata/subtestdata/subtestdata/subfile2.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/xembed/testdata/subtestdata/subtestdata/subfile2.txt
--------------------------------------------------------------------------------
/ignite/pkg/xembed/testdata/test.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/xembed/testdata/test.txt
--------------------------------------------------------------------------------
/ignite/pkg/xembed/xembed.go:
--------------------------------------------------------------------------------
1 | package xembed
2 |
3 | import (
4 | "embed"
5 | "io/fs"
6 | "path/filepath"
7 | )
8 |
9 | // FileList list all files into an embed.FS in a provider path.
10 | func FileList(efs embed.FS, path string) ([]string, error) {
11 | return fileList(efs, path, path)
12 | }
13 |
14 | func fileList(efs embed.FS, path, currentDir string) ([]string, error) {
15 | dir, err := fs.ReadDir(efs, currentDir)
16 | if err != nil {
17 | return nil, err
18 | }
19 |
20 | files := make([]string, 0)
21 | for _, f := range dir {
22 | if !f.IsDir() {
23 | relPath, err := filepath.Rel(path, filepath.Join(currentDir, f.Name()))
24 | if err != nil {
25 | return nil, err
26 | }
27 | files = append(files, relPath)
28 | continue
29 | }
30 |
31 | newDir := filepath.Join(currentDir, f.Name())
32 | dirFiles, err := fileList(efs, path, newDir)
33 | if err != nil {
34 | return nil, err
35 | }
36 | files = append(files, dirFiles...)
37 | }
38 | return files, nil
39 | }
40 |
--------------------------------------------------------------------------------
/ignite/pkg/xexec/testdata/bin.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
--------------------------------------------------------------------------------
/ignite/pkg/xexec/testdata/nobin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/xexec/testdata/nobin
--------------------------------------------------------------------------------
/ignite/pkg/xfilepath/testdata/testfile:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/pkg/xfilepath/testdata/testfile
--------------------------------------------------------------------------------
/ignite/pkg/xgenny/transformer.go:
--------------------------------------------------------------------------------
1 | package xgenny
2 |
3 | import (
4 | "github.com/gobuffalo/genny/v2"
5 | "github.com/gobuffalo/plush/v4"
6 |
7 | "github.com/ignite/cli/v29/ignite/pkg/errors"
8 | )
9 |
10 | // Transformer will plush-ify any file that has a ".plush" extension.
11 | func Transformer(ctx *plush.Context) genny.Transformer {
12 | t := genny.NewTransformer(".plush", func(f genny.File) (genny.File, error) {
13 | s, err := plush.RenderR(f, ctx)
14 | if err != nil {
15 | return f, errors.Wrap(err, f.Name())
16 | }
17 | return genny.NewFileS(f.Name(), s), nil
18 | })
19 | t.StripExt = true
20 | return t
21 | }
22 |
--------------------------------------------------------------------------------
/ignite/pkg/xhttp/server.go:
--------------------------------------------------------------------------------
1 | package xhttp
2 |
3 | import (
4 | "context"
5 | "net/http"
6 | "time"
7 |
8 | "github.com/ignite/cli/v29/ignite/pkg/errors"
9 | )
10 |
11 | // ShutdownTimeout is the timeout for waiting all requests to complete.
12 | const ShutdownTimeout = time.Minute
13 |
14 | // Serve starts s server and shutdowns it once the ctx is cancelled.
15 | func Serve(ctx context.Context, s *http.Server) error {
16 | go func() {
17 | <-ctx.Done()
18 |
19 | shutdownCtx, cancel := context.WithTimeout(context.Background(), ShutdownTimeout)
20 | defer cancel()
21 |
22 | _ = s.Shutdown(shutdownCtx)
23 | }()
24 |
25 | err := s.ListenAndServe()
26 | if errors.Is(err, http.ErrServerClosed) {
27 | return nil
28 | }
29 |
30 | return err
31 | }
32 |
--------------------------------------------------------------------------------
/ignite/pkg/xio/xio.go:
--------------------------------------------------------------------------------
1 | package xio
2 |
3 | import "io"
4 |
5 | type nopWriteCloser struct {
6 | io.Writer
7 | }
8 |
9 | func (w *nopWriteCloser) Close() error {
10 | return nil
11 | }
12 |
13 | // NopWriteCloser returns a WriteCloser.
14 | func NopWriteCloser(w io.Writer) io.WriteCloser {
15 | return &nopWriteCloser{w}
16 | }
17 |
--------------------------------------------------------------------------------
/ignite/pkg/xos/mv_test.go:
--------------------------------------------------------------------------------
1 | package xos_test
2 |
3 | import (
4 | "fmt"
5 | "os"
6 | "path"
7 | "testing"
8 |
9 | "github.com/stretchr/testify/require"
10 |
11 | "github.com/ignite/cli/v29/ignite/pkg/xos"
12 | )
13 |
14 | func TestRename(t *testing.T) {
15 | var (
16 | dir = t.TempDir()
17 | oldpath = path.Join(dir, "old")
18 | newpath = path.Join(dir, "new")
19 | require = require.New(t)
20 | )
21 | err := os.WriteFile(oldpath, []byte("foo"), os.ModePerm)
22 | require.NoError(err)
23 |
24 | err = xos.Rename(oldpath, newpath)
25 |
26 | require.NoError(err)
27 | bz, err := os.ReadFile(newpath)
28 | require.NoError(err)
29 | require.Equal([]byte("foo"), bz)
30 | _, err = os.Open(oldpath)
31 | require.EqualError(err, fmt.Sprintf("open %s: no such file or directory", oldpath))
32 | }
33 |
--------------------------------------------------------------------------------
/ignite/pkg/xos/rm.go:
--------------------------------------------------------------------------------
1 | package xos
2 |
3 | import (
4 | "os"
5 | "path/filepath"
6 | )
7 |
8 | func RemoveAllUnderHome(path string) error {
9 | home, err := os.UserHomeDir()
10 | if err != nil {
11 | return err
12 | }
13 | return os.RemoveAll(filepath.Join(home, path))
14 | }
15 |
--------------------------------------------------------------------------------
/ignite/pkg/xstrcase/xstrcase.go:
--------------------------------------------------------------------------------
1 | package xstrcase
2 |
3 | import (
4 | "strings"
5 |
6 | protogenerator "github.com/cosmos/gogoproto/protoc-gen-gogo/generator"
7 | "github.com/iancoleman/strcase"
8 |
9 | "github.com/ignite/cli/v29/ignite/pkg/xstrings"
10 | )
11 |
12 | // UpperCamel returns the name with upper camel and no special character.
13 | func UpperCamel(name string) string {
14 | return protogenerator.CamelCase(strcase.ToSnake(name))
15 | }
16 |
17 | // Lowercase returns the name with lower case and no special character.
18 | func Lowercase(name string) string {
19 | return strings.ToLower(
20 | strings.ReplaceAll(
21 | xstrings.NoDash(name),
22 | "_",
23 | "",
24 | ),
25 | )
26 | }
27 |
28 | // Uppercase returns the name with upper case and no special character.
29 | func Uppercase(name string) string {
30 | return strings.ToUpper(
31 | strings.ReplaceAll(
32 | xstrings.NoDash(name),
33 | "_",
34 | "",
35 | ),
36 | )
37 | }
38 |
--------------------------------------------------------------------------------
/ignite/pkg/xtime/clock_test.go:
--------------------------------------------------------------------------------
1 | package xtime_test
2 |
3 | import (
4 | "testing"
5 | "time"
6 |
7 | "github.com/stretchr/testify/require"
8 |
9 | "github.com/ignite/cli/v29/ignite/pkg/xtime"
10 | )
11 |
12 | func TestClockSystem(t *testing.T) {
13 | c := xtime.NewClockSystem()
14 | require.False(t, c.Now().IsZero())
15 | require.Panics(t, func() { c.Add(time.Second) })
16 | }
17 |
18 | func TestClockMock(t *testing.T) {
19 | timeSample := time.Now()
20 | c := xtime.NewClockMock(timeSample)
21 | require.True(t, c.Now().Equal(timeSample))
22 | c.Add(time.Second)
23 | require.True(t, c.Now().Equal(timeSample.Add(time.Second)))
24 | }
25 |
--------------------------------------------------------------------------------
/ignite/pkg/xtime/unix.go:
--------------------------------------------------------------------------------
1 | package xtime
2 |
3 | import (
4 | "time"
5 | )
6 |
7 | // Seconds creates a time.Duration based on the seconds parameter.
8 | func Seconds(seconds int64) time.Duration {
9 | return time.Duration(seconds) * time.Second
10 | }
11 |
12 | // NowAfter returns a unix date string from now plus the duration.
13 | func NowAfter(unix time.Duration) string {
14 | date := time.Now().Add(unix)
15 | return FormatUnix(date)
16 | }
17 |
18 | // FormatUnix formats the time.Time to unix date string.
19 | func FormatUnix(date time.Time) string {
20 | return date.Format(time.UnixDate)
21 | }
22 |
23 | // FormatUnixInt formats the int timestamp to unix date string.
24 | func FormatUnixInt(unix int64) string {
25 | return FormatUnix(time.Unix(unix, 0))
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/pkg/xyaml/map_test.go:
--------------------------------------------------------------------------------
1 | package xyaml_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 | "gopkg.in/yaml.v3"
8 |
9 | "github.com/ignite/cli/v29/ignite/pkg/xyaml"
10 | )
11 |
12 | func TestUnmarshalWithCustomMapType(t *testing.T) {
13 | // Arrange
14 | input := `
15 | foo:
16 | bar: baz
17 | `
18 | output := xyaml.Map{}
19 |
20 | // Act
21 | err := yaml.Unmarshal([]byte(input), &output)
22 |
23 | // Assert
24 | require.NoError(t, err)
25 | require.NotNil(t, output["foo"])
26 | require.IsType(t, (map[string]interface{})(nil), output["foo"])
27 | }
28 |
29 | func TestUnmarshalWithNativeMapType(t *testing.T) {
30 | // Arrange
31 | input := `
32 | foo:
33 | bar: baz
34 | `
35 | output := make(map[string]interface{})
36 |
37 | // Act
38 | err := yaml.Unmarshal([]byte(input), &output)
39 |
40 | // Assert
41 | require.NoError(t, err)
42 | require.NotNil(t, output["foo"])
43 | require.IsType(t, (map[string]interface{})(nil), output["foo"])
44 | }
45 |
--------------------------------------------------------------------------------
/ignite/services/chain/lint.go:
--------------------------------------------------------------------------------
1 | package chain
2 |
3 | import (
4 | "context"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/cmdrunner/exec"
7 | )
8 |
9 | // Lint runs the linting process for the chain.
10 | // It uses golangci-lint to lint the chain's codebase.
11 | func (c *Chain) Lint(ctx context.Context) error {
12 | cmd := []string{
13 | "go",
14 | "tool",
15 | "github.com/golangci/golangci-lint/cmd/golangci-lint",
16 | "run",
17 | "./...",
18 | "--out-format=tab",
19 | }
20 |
21 | return exec.Exec(ctx, cmd, exec.IncludeStdLogsToError())
22 | }
23 |
--------------------------------------------------------------------------------
/ignite/services/chain/testdata/version/mars.v0.2-3-gaae48b7.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/services/chain/testdata/version/mars.v0.2-3-gaae48b7.tar.gz
--------------------------------------------------------------------------------
/ignite/services/chain/testdata/version/mars.v0.2.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/services/chain/testdata/version/mars.v0.2.tar.gz
--------------------------------------------------------------------------------
/ignite/services/plugin/apps_config.go:
--------------------------------------------------------------------------------
1 | package plugin
2 |
3 | // AppsConfig is the structure of app.ignite.yml file.
4 | type AppsConfig struct {
5 | Version uint `yaml:"version"`
6 | Apps map[string]AppInfo `yaml:"apps"`
7 | }
8 |
9 | // AppInfo is the structure of app info in app.ignite.yml file which only holds
10 | // the description and the relative path of the app.
11 | type AppInfo struct {
12 | Description string `yaml:"description"`
13 | Path string `yaml:"path"`
14 | }
15 |
--------------------------------------------------------------------------------
/ignite/services/plugin/grpc/v1/interface_hook.go:
--------------------------------------------------------------------------------
1 | package v1
2 |
3 | import "github.com/spf13/cobra"
4 |
5 | // CommandPath returns the absolute command path including the binary name as prefix.
6 | func (h *Hook) CommandPath() string {
7 | return ensureFullCommandPath(h.PlaceHookOn)
8 | }
9 |
10 | // ImportFlags imports flags from a Cobra command.
11 | func (h *Hook) ImportFlags(cmd *cobra.Command) {
12 | h.Flags = extractCobraFlags(cmd)
13 | }
14 |
--------------------------------------------------------------------------------
/ignite/services/plugin/grpc/v1/interface_manifest.go:
--------------------------------------------------------------------------------
1 | package v1
2 |
3 | import "github.com/spf13/cobra"
4 |
5 | // ImportCobraCommand appends Cobra command definitions to the list of plugin commands.
6 | // This method can be used in cases where a plugin defines the commands using Cobra.
7 | func (m *Manifest) ImportCobraCommand(cmd *cobra.Command, placeCommandUnder string) {
8 | m.Commands = append(m.Commands, convertCobraCommand(cmd, placeCommandUnder))
9 | }
10 |
11 | func convertCobraCommand(c *cobra.Command, placeCommandUnder string) *Command {
12 | cmd := &Command{
13 | Use: c.Use,
14 | Aliases: c.Aliases,
15 | Short: c.Short,
16 | Long: c.Long,
17 | Hidden: c.Hidden,
18 | PlaceCommandUnder: placeCommandUnder,
19 | Flags: extractCobraFlags(c),
20 | }
21 |
22 | for _, c := range c.Commands() {
23 | cmd.Commands = append(cmd.Commands, convertCobraCommand(c, ""))
24 | }
25 |
26 | return cmd
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/services/plugin/grpc/v1/types_hook_test.go:
--------------------------------------------------------------------------------
1 | package v1_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 |
8 | v1 "github.com/ignite/cli/v29/ignite/services/plugin/grpc/v1"
9 | )
10 |
11 | func TestHookCommandPath(t *testing.T) {
12 | cases := []struct {
13 | name, wantPath string
14 | hook *v1.Hook
15 | }{
16 | {
17 | name: "relative path",
18 | hook: &v1.Hook{
19 | PlaceHookOn: "chain",
20 | },
21 | wantPath: "ignite chain",
22 | },
23 | {
24 | name: "full path",
25 | hook: &v1.Hook{
26 | PlaceHookOn: "ignite chain",
27 | },
28 | wantPath: "ignite chain",
29 | },
30 | {
31 | name: "path with spaces",
32 | hook: &v1.Hook{
33 | PlaceHookOn: " ignite scaffold ",
34 | },
35 | wantPath: "ignite scaffold",
36 | },
37 | }
38 |
39 | for _, tc := range cases {
40 | t.Run(tc.name, func(t *testing.T) {
41 | path := tc.hook.CommandPath()
42 | require.Equal(t, tc.wantPath, path)
43 | })
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/ignite/services/plugin/template/.gitignore.plush:
--------------------------------------------------------------------------------
1 | # Built with https://github.com/ignite/cli
2 | # Binaries for programs and plugins
3 | *.exe
4 | *.exe~
5 | *.dll
6 | *.so
7 | *.dylib
8 | *.ign
9 |
10 | # Test binary, built with `go test -c`
11 | *.test
12 |
13 | # Output of the go coverage tool, specifically when used with LiteIDE
14 | *.out
15 |
16 | # Dependency directories (remove the comment below to include it)
17 | # vendor/
18 |
19 | # Go workspace file
20 | go.work
21 | go.work.sum
22 |
--------------------------------------------------------------------------------
/ignite/services/plugin/template/app.ignite.yml.plush:
--------------------------------------------------------------------------------
1 | version: 1
2 | apps:
3 | <%= Name %>:
4 | description: <%= Name %> is an awesome Ignite application!
5 | path: ./
6 |
--------------------------------------------------------------------------------
/ignite/services/plugin/template/cmd/cmd.go.plush:
--------------------------------------------------------------------------------
1 | package cmd
2 |
3 | import "github.com/ignite/cli/v29/ignite/services/plugin"
4 |
5 | // GetCommands returns the list of <%= Name %> app commands.
6 | func GetCommands() []*plugin.Command {
7 | return []*plugin.Command{
8 | {
9 | Use: "<%= Name %> [command]",
10 | Short: "<%= Name %> is an awesome Ignite application!",
11 | Commands: []*plugin.Command{
12 | {
13 | Use: "hello",
14 | Short: "Say hello to the world of ignite!",
15 | },
16 | },
17 | },
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ignite/services/plugin/template/cmd/hello.go.plush:
--------------------------------------------------------------------------------
1 | package cmd
2 |
3 | import (
4 | "context"
5 | "fmt"
6 |
7 | "github.com/ignite/cli/v29/ignite/services/plugin"
8 | )
9 |
10 | // ExecuteHello executes the hello subcommand.
11 | func ExecuteHello(ctx context.Context, cmd *plugin.ExecutedCommand) error {
12 | fmt.Println("Hello, world!")
13 | return nil
14 | }
15 |
--------------------------------------------------------------------------------
/ignite/services/plugin/template/go.mod.plush:
--------------------------------------------------------------------------------
1 | module <%= AppName %>
2 |
3 | go 1.23
4 |
5 | require (
6 | github.com/hashicorp/go-plugin v1.6.2
7 | github.com/ignite/cli/v29 v29.0.0
8 | github.com/stretchr/testify v1.8.4
9 | )
10 |
11 | replace github.com/ignite/cli/v29 => github.com/ignite/cli/v29 main
12 | replace github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.50.12
--------------------------------------------------------------------------------
/ignite/services/plugin/testdata/fakebin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ignite/cli/5c706f1966601cad4d685f0dd48593df85d7e6cf/ignite/services/plugin/testdata/fakebin
--------------------------------------------------------------------------------
/ignite/services/scaffolder/patch.go:
--------------------------------------------------------------------------------
1 | package scaffolder
2 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/.gitignore:
--------------------------------------------------------------------------------
1 | vue/node_modules
2 | vue/dist
3 | release/
4 | .idea/
5 | .vscode/
6 | .DS_Store
7 | *.dot
8 | *.log
9 | *.ign
10 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/app/config.go.plush:
--------------------------------------------------------------------------------
1 | package app
2 |
3 | import sdk "github.com/cosmos/cosmos-sdk/types"
4 |
5 | func init() {
6 | // Set prefixes
7 | accountPubKeyPrefix := AccountAddressPrefix + "pub"
8 | validatorAddressPrefix := AccountAddressPrefix + "valoper"
9 | validatorPubKeyPrefix := AccountAddressPrefix + "valoperpub"
10 | consNodeAddressPrefix := AccountAddressPrefix + "valcons"
11 | consNodePubKeyPrefix := AccountAddressPrefix + "valconspub"
12 |
13 | // Set and seal config
14 | config := sdk.GetConfig()
15 | config.SetCoinType(ChainCoinType)
16 | config.SetBech32PrefixForAccount(AccountAddressPrefix, accountPubKeyPrefix)
17 | config.SetBech32PrefixForValidator(validatorAddressPrefix, validatorPubKeyPrefix)
18 | config.SetBech32PrefixForConsensusNode(consNodeAddressPrefix, consNodePubKeyPrefix)
19 | config.Seal()
20 | }
--------------------------------------------------------------------------------
/ignite/templates/app/files/app/genesis.go.plush:
--------------------------------------------------------------------------------
1 | package app
2 |
3 | import (
4 | "encoding/json"
5 | )
6 |
7 | // GenesisState of the blockchain is represented here as a map of raw json
8 | // messages key'd by a identifier string.
9 | // The identifier is used to determine which module genesis information belongs
10 | // to so it may be appropriately routed during init chain.
11 | // Within this application default genesis information is retrieved from
12 | // the ModuleBasicManager which populates json from each BasicModule
13 | // object provided to it during init.
14 | type GenesisState map[string]json.RawMessage
15 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/buf.yaml.plush:
--------------------------------------------------------------------------------
1 | version: v2
2 | modules:
3 | - path: <%= ProtoDir %>
4 | deps:
5 | - buf.build/cosmos/cosmos-proto
6 | - buf.build/cosmos/cosmos-sdk
7 | - buf.build/cosmos/gogo-proto
8 | - buf.build/cosmos/ics23
9 | - buf.build/googleapis/googleapis
10 | - buf.build/protocolbuffers/wellknowntypes
11 | lint:
12 | use:
13 | - COMMENTS
14 | - STANDARD
15 | - FILE_LOWER_SNAKE_CASE
16 | except:
17 | - COMMENT_FIELD
18 | - RPC_REQUEST_STANDARD_NAME
19 | - RPC_RESPONSE_STANDARD_NAME
20 | - SERVICE_SUFFIX
21 | ignore:
22 | - proto/tendermint
23 | disallow_comment_ignores: true
24 | breaking:
25 | use:
26 | - FILE
27 | except:
28 | - EXTENSION_NO_DELETE
29 | - FIELD_SAME_DEFAULT
30 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/cmd/{{binaryNamePrefix}}d/main.go.plush:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | clienthelpers "cosmossdk.io/client/v2/helpers"
8 | svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
9 |
10 | "<%= ModulePath %>/app"
11 | "<%= ModulePath %>/cmd/<%= BinaryNamePrefix %>d/cmd"
12 | )
13 |
14 | func main() {
15 | rootCmd := cmd.NewRootCmd()
16 | if err := svrcmd.Execute(rootCmd, clienthelpers.EnvPrefix, app.DefaultNodeHome); err != nil {
17 | fmt.Fprintln(rootCmd.OutOrStderr(), err)
18 | os.Exit(1)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/config.yml.plush:
--------------------------------------------------------------------------------
1 | version: 1
2 | validation: sovereign
3 | default_denom: <%= DefaultDenom %>
4 | accounts:
5 | - name: alice
6 | coins:
7 | - 20000token
8 | - 200000000<%= DefaultDenom %>
9 | - name: bob
10 | coins:
11 | - 10000token
12 | - 100000000<%= DefaultDenom %>
13 | client:
14 | openapi:
15 | path: docs/static/openapi.yml
16 | faucet:
17 | name: bob
18 | coins:
19 | - 5token
20 | - 100000stake
21 | validators:
22 | - name: alice
23 | bonded: 100000000<%= DefaultDenom %>
24 | - name: validator1
25 | bonded: 200000000<%= DefaultDenom %>
26 | - name: validator2
27 | bonded: 100000000<%= DefaultDenom %>
--------------------------------------------------------------------------------
/ignite/templates/app/files/docs/docs.go.plush:
--------------------------------------------------------------------------------
1 | package docs
2 |
3 | import (
4 | "embed"
5 | httptemplate "html/template"
6 | "net/http"
7 |
8 | "github.com/gorilla/mux"
9 | )
10 |
11 | const (
12 | apiFile = "/static/openapi.yml"
13 | indexFile = "template/index.tpl"
14 | )
15 |
16 |
17 | //go:embed static
18 | var Static embed.FS
19 |
20 | //go:embed template
21 | var template embed.FS
22 |
23 | func RegisterOpenAPIService(appName string, rtr *mux.Router) {
24 | rtr.Handle(apiFile, http.FileServer(http.FS(Static)))
25 | rtr.HandleFunc("/", handler(appName))
26 | }
27 |
28 | // handler returns an http handler that servers OpenAPI console for an OpenAPI spec at specURL.
29 | func handler(title string) http.HandlerFunc {
30 | t, _ := httptemplate.ParseFS(template, indexFile)
31 |
32 | return func(w http.ResponseWriter, req *http.Request) {
33 | _ = t.Execute(w, struct {
34 | Title string
35 | URL string
36 | }{
37 | title,
38 | apiFile,
39 | })
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/docs/template/index.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ .Title }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
24 |
25 |
26 | Footer
27 | © 2022 GitHub, Inc.
28 | Footer navigation
29 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/testutil/sample/sample.go.plush:
--------------------------------------------------------------------------------
1 | package sample
2 |
3 | import (
4 | "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
5 | sdk "github.com/cosmos/cosmos-sdk/types"
6 | )
7 |
8 | // AccAddress returns a sample account address
9 | func AccAddress() string {
10 | pk := ed25519.GenPrivKey().PubKey()
11 | addr := pk.Address()
12 | return sdk.AccAddress(addr).String()
13 | }
14 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/{{protoDir}}/buf.gen.gogo.yaml:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from Ignite. You can edit
2 | # the file content but do not change the file name or path.
3 | #
4 | # buf.gen.gogo.yaml
5 | #
6 | version: v2
7 | plugins:
8 | - local: ["go", "tool", "github.com/cosmos/gogoproto/protoc-gen-gocosmos"]
9 | out: .
10 | opt:
11 | - plugins=grpc
12 | - Mgoogle/protobuf/any.proto=github.com/cosmos/gogoproto/types/any
13 | - Mcosmos/orm/v1/orm.proto=cosmossdk.io/orm
14 | - Mcosmos/app/v1alpha1/module.proto=cosmossdk.io/api/cosmos/app/v1alpha1
15 | - local:
16 | [
17 | "go",
18 | "tool",
19 | "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway",
20 | ]
21 | out: .
22 | opt:
23 | - logtostderr=true
24 | - allow_colon_final_segments=true
25 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/{{protoDir}}/buf.gen.sta.yaml:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from Ignite. You can edit
2 | # the file content but do not change the file name or path.
3 | #
4 | # buf.gen.sta.yaml
5 | #
6 | version: v2
7 | plugins:
8 | - local:
9 | [
10 | "go",
11 | "tool",
12 | "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2",
13 | ]
14 | out: .
15 | opt:
16 | - logtostderr=true
17 | - openapi_naming_strategy=simple
18 | - ignore_comments=true
19 | - simple_operation_ids=false
20 | - json_names_for_fields=false
21 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/{{protoDir}}/buf.gen.swagger.yaml:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from Ignite. You can edit
2 | # the file content but do not change the file name or path.
3 | #
4 | # buf.gen.swagger.yaml
5 | #
6 | version: v2
7 | plugins:
8 | - local:
9 | [
10 | "go",
11 | "tool",
12 | "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2",
13 | ]
14 | out: .
15 | opt:
16 | - logtostderr=true
17 | - openapi_naming_strategy=fqn
18 | - json_names_for_fields=false
19 | - generate_unbound_methods=true
20 |
--------------------------------------------------------------------------------
/ignite/templates/app/files/{{protoDir}}/buf.gen.ts.yaml:
--------------------------------------------------------------------------------
1 | # This file is auto-generated from Ignite. You can edit
2 | # the file content but do not change the file name or path.
3 | #
4 | # buf.gen.ts.yaml
5 | #
6 | version: v2
7 | managed:
8 | enabled: true
9 | plugins:
10 | - remote: buf.build/community/stephenh-ts-proto
11 | out: .
12 | opt:
13 | - logtostderr=true
14 | - allow_merge=true
15 | - json_names_for_fields=false
16 | - ts_proto_opt=snakeToCamel=true
17 | - ts_proto_opt=esModuleInterop=true
18 | - ts_proto_out=.
19 |
--------------------------------------------------------------------------------
/ignite/templates/app/options.go:
--------------------------------------------------------------------------------
1 | package app
2 |
3 | // Options ...
4 | type Options struct {
5 | AppName string
6 | AppPath string
7 | ProtoDir string
8 | GitHubPath string
9 | BinaryNamePrefix string
10 | ModulePath string
11 | AddressPrefix string
12 | CoinType uint32
13 | DefaultDenom string
14 | // IncludePrefixes is used to filter the files to include from the generator
15 | IncludePrefixes []string
16 | IsChainMinimal bool
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/templates/ibc/files/packet/component/x/{{moduleName}}/types/packet_{{packetName}}.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | // GetBytes is a helper for serialising
4 | func (p <%= packetName.PascalCase %>PacketData) GetBytes() ([]byte, error) {
5 | var modulePacket <%= title(moduleName) %>PacketData
6 |
7 | modulePacket.Packet = &<%= title(moduleName) %>PacketData_<%= packetName.PascalCase %>Packet{&p}
8 |
9 | return modulePacket.Marshal()
10 | }
--------------------------------------------------------------------------------
/ignite/templates/ibc/files/packet/messages/x/{{moduleName}}/types/messages_{{packetName}}.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | func NewMsgSend<%= packetName.PascalCase %>(
4 | <%= MsgSigner.LowerCamel %> string,
5 | port string,
6 | channelID string,
7 | timeoutTimestamp uint64,<%= for (field) in fields { %>
8 | <%= field.Name.LowerCamel %> <%= field.DataType() %>,<% } %>
9 | ) *MsgSend<%= packetName.PascalCase %> {
10 | return &MsgSend<%= packetName.PascalCase %>{
11 | <%= MsgSigner.UpperCamel %>: <%= MsgSigner.LowerCamel %>,
12 | Port: port,
13 | ChannelID: channelID,
14 | TimeoutTimestamp: timeoutTimestamp,<%= for (field) in fields { %>
15 | <%= field.Name.UpperCamel %>: <%= field.Name.LowerCamel %>,<% } %>
16 | }
17 | }
--------------------------------------------------------------------------------
/ignite/templates/ibc/placeholders.go:
--------------------------------------------------------------------------------
1 | package ibc
2 |
3 | //nolint:godot
4 | const (
5 | // Placeholders IBC packets
6 | PlaceholderIBCPacketEvent = "// this line is used by starport scaffolding # ibc/packet/event"
7 | PlaceholderIBCPacketModuleRecv = "// this line is used by starport scaffolding # ibc/packet/module/recv"
8 | PlaceholderIBCPacketModuleAck = "// this line is used by starport scaffolding # ibc/packet/module/ack"
9 | PlaceholderIBCPacketModuleTimeout = "// this line is used by starport scaffolding # ibc/packet/module/timeout"
10 | )
11 |
--------------------------------------------------------------------------------
/ignite/templates/message/files/message/x/{{moduleName}}/keeper/msg_server_{{msgName}}.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 |
6 | "<%= ModulePath %>/x/<%= ModuleName %>/types"
7 | sdk "github.com/cosmos/cosmos-sdk/types"
8 | )
9 |
10 |
11 | func (k msgServer) <%= MsgName.PascalCase %>(ctx context.Context, msg *types.Msg<%= MsgName.PascalCase %>) (*types.Msg<%= MsgName.PascalCase %>Response, error) {
12 | if _, err := k.addressCodec.StringToBytes(msg.<%= MsgSigner.PascalCase %>); err != nil {
13 | return nil, errorsmod.Wrap(err, "invalid authority address")
14 | }
15 |
16 | // TODO: Handle the message
17 |
18 | return &types.Msg<%= MsgName.PascalCase %>Response{}, nil
19 | }
20 |
--------------------------------------------------------------------------------
/ignite/templates/message/files/message/x/{{moduleName}}/types/message_{{msgName}}.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | func NewMsg<%= MsgName.PascalCase %>(<%= MsgSigner.LowerCamel %> string<%= for (field) in Fields { %>, <%= field.Name.LowerCamel %> <%= field.DataType() %><% } %>) *Msg<%= MsgName.PascalCase %> {
4 | return &Msg<%= MsgName.PascalCase %>{
5 | <%= MsgSigner.UpperCamel %>: <%= MsgSigner.LowerCamel %>,<%= for (field) in Fields { %>
6 | <%= field.Name.UpperCamel %>: <%= field.Name.LowerCamel %>,<% } %>
7 | }
8 | }
--------------------------------------------------------------------------------
/ignite/templates/message/options.go:
--------------------------------------------------------------------------------
1 | package message
2 |
3 | import (
4 | "path/filepath"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/multiformatname"
7 | "github.com/ignite/cli/v29/ignite/templates/field"
8 | )
9 |
10 | // Options ...
11 | type Options struct {
12 | AppName string
13 | ProtoDir string
14 | ProtoVer string
15 | ModuleName string
16 | ModulePath string
17 | MsgName multiformatname.Name
18 | MsgSigner multiformatname.Name
19 | MsgDesc string
20 | Fields field.Fields
21 | ResFields field.Fields
22 | NoSimulation bool
23 | }
24 |
25 | // ProtoFile returns the path to the proto folder.
26 | func (opts *Options) ProtoFile(fname string) string {
27 | return filepath.Join(opts.ProtoDir, opts.AppName, opts.ModuleName, opts.ProtoVer, fname)
28 | }
29 |
--------------------------------------------------------------------------------
/ignite/templates/module/const.go:
--------------------------------------------------------------------------------
1 | package module
2 |
3 | const (
4 | PathAppModule = "app"
5 | PathAppGo = "app/app.go"
6 | PathIBCConfigGo = "app/ibc.go"
7 | PathAppConfigGo = "app/app_config.go"
8 | )
9 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/genesis.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 |
6 | "<%= modulePath %>/x/<%= moduleName %>/types"
7 | )
8 |
9 | // InitGenesis initializes the module's state from a provided genesis state.
10 | func (k Keeper) InitGenesis(ctx context.Context, genState types.GenesisState) error {
11 | return k.Params.Set(ctx, genState.Params)
12 | }
13 |
14 | // ExportGenesis returns the module's exported genesis.
15 | func (k Keeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) {
16 | var err error
17 |
18 | genesis := types.DefaultGenesis()
19 | genesis.Params, err = k.Params.Get(ctx)
20 | if err != nil {
21 | return nil, err
22 | }
23 |
24 |
25 | return genesis, nil
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/genesis_test.go.plush:
--------------------------------------------------------------------------------
1 | package keeper_test
2 |
3 | import (
4 | "testing"
5 |
6 | "<%= modulePath %>/x/<%= moduleName %>/types"
7 |
8 | "github.com/stretchr/testify/require"
9 | )
10 |
11 | func TestGenesis(t *testing.T) {
12 | genesisState := types.GenesisState{
13 | Params: types.DefaultParams(),
14 | <%= if (isIBC) { %>PortId: types.PortID,<% } %>
15 | }
16 |
17 | f := initFixture(t)
18 | err := f.keeper.InitGenesis(f.ctx, genesisState)
19 | require.NoError(t, err)
20 | got, err := f.keeper.ExportGenesis(f.ctx)
21 | require.NoError(t, err)
22 | require.NotNil(t, got)
23 |
24 | <%= if (isIBC) { %>require.Equal(t, genesisState.PortId, got.PortId)<% } %>
25 | require.EqualExportedValues(t, genesisState.Params, got.Params)
26 | }
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/msg_server.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "<%= modulePath %>/x/<%= moduleName %>/types"
5 | )
6 |
7 | type msgServer struct {
8 | Keeper
9 | }
10 |
11 | // NewMsgServerImpl returns an implementation of the MsgServer interface
12 | // for the provided Keeper.
13 | func NewMsgServerImpl(keeper Keeper) types.MsgServer {
14 | return &msgServer{Keeper: keeper}
15 | }
16 |
17 | var _ types.MsgServer = msgServer{}
18 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/query.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "<%= modulePath %>/x/<%= moduleName %>/types"
5 | )
6 |
7 | var _ types.QueryServer = queryServer{}
8 |
9 | // NewQueryServerImpl returns an implementation of the QueryServer interface
10 | // for the provided Keeper.
11 | func NewQueryServerImpl(k Keeper) types.QueryServer {
12 | return queryServer{k}
13 | }
14 |
15 | type queryServer struct {
16 | k Keeper
17 | }
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/query_params.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 | "errors"
6 |
7 | "cosmossdk.io/collections"
8 |
9 | "google.golang.org/grpc/codes"
10 | "google.golang.org/grpc/status"
11 |
12 | "<%= modulePath %>/x/<%= moduleName %>/types"
13 | )
14 |
15 | func (q queryServer) Params(ctx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
16 | if req == nil {
17 | return nil, status.Error(codes.InvalidArgument, "invalid request")
18 | }
19 |
20 | params, err := q.k.Params.Get(ctx)
21 | if err != nil && !errors.Is(err, collections.ErrNotFound) {
22 | return nil, status.Error(codes.Internal, "internal error")
23 | }
24 |
25 | return &types.QueryParamsResponse{Params: params}, nil
26 | }
27 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/keeper/query_params_test.go.plush:
--------------------------------------------------------------------------------
1 | package keeper_test
2 |
3 | import (
4 | "testing"
5 |
6 | "github.com/stretchr/testify/require"
7 |
8 | "<%= modulePath %>/x/<%= moduleName %>/keeper"
9 | "<%= modulePath %>/x/<%= moduleName %>/types"
10 | )
11 |
12 | func TestParamsQuery(t *testing.T) {
13 | f := initFixture(t)
14 |
15 | qs := keeper.NewQueryServerImpl(f.keeper)
16 | params := types.DefaultParams()
17 | require.NoError(t, f.keeper.Params.Set(f.ctx, params))
18 |
19 | response, err := qs.Params(f.ctx, &types.QueryParamsRequest{})
20 | require.NoError(t, err)
21 | require.Equal(t, &types.QueryParamsResponse{Params: params}, response)
22 | }
23 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/types/codec.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | <%= if (isIBC) { %>"github.com/cosmos/cosmos-sdk/codec"<% } %>
5 | codectypes "github.com/cosmos/cosmos-sdk/codec/types"
6 | sdk "github.com/cosmos/cosmos-sdk/types"
7 | "github.com/cosmos/cosmos-sdk/types/msgservice"
8 | )
9 |
10 | func RegisterInterfaces(registrar codectypes.InterfaceRegistry) {
11 | registrar.RegisterImplementations((*sdk.Msg)(nil),
12 | &MsgUpdateParams{},
13 | )
14 | msgservice.RegisterMsgServiceDesc(registrar, &_Msg_serviceDesc)
15 | }
16 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/types/errors.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | // DONTCOVER
4 |
5 | import (
6 | "cosmossdk.io/errors"
7 | )
8 |
9 | // x/<%= moduleName %> module sentinel errors
10 | var (
11 | ErrInvalidSigner = errors.Register(ModuleName, 1100, "expected gov account as only signer for proposal message")
12 | <%= if (isIBC) { %>ErrInvalidPacketTimeout = errors.Register(ModuleName, 1500, "invalid packet timeout")
13 | ErrInvalidVersion = errors.Register(ModuleName, 1501, "invalid version")<% } %>
14 | )
15 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/types/genesis.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | // DefaultGenesis returns the default genesis state
4 | func DefaultGenesis() *GenesisState {
5 | return &GenesisState{
6 | Params: DefaultParams(),
7 | }
8 | }
9 |
10 | // Validate performs basic genesis state validation returning an error upon any
11 | // failure.
12 | func (gs GenesisState) Validate() error {
13 | return gs.Params.Validate()
14 | }
15 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/types/keys.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import "cosmossdk.io/collections"
4 |
5 | const (
6 | // ModuleName defines the module name
7 | ModuleName = "<%= moduleName %>"
8 |
9 | // StoreKey defines the primary module store key
10 | StoreKey = ModuleName
11 |
12 | // GovModuleName duplicates the gov module's name to avoid a dependency with x/gov.
13 | // It should be synced with the gov module's name if it is ever changed.
14 | // See: https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/gov/types/keys.go#L9
15 | GovModuleName = "gov"
16 |
17 | <%= if (isIBC) { %>// this line is used by starport scaffolding # ibc/keys/name<% } %>
18 | )
19 |
20 | <%= if (isIBC) { %>// this line is used by starport scaffolding # ibc/keys/port<% } %>
21 |
22 | // ParamsKey is the prefix to retrieve all Params
23 | var ParamsKey = collections.NewPrefix("p_<%= moduleName %>")
24 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/x/{{moduleName}}/types/types.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/{{protoDir}}/{{appName}}/{{moduleName}}/module/{{protoVer}}/module.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoModulePkgName %>;
3 |
4 | import "cosmos/app/v1alpha1/module.proto";
5 |
6 | option go_package = "<%= modulePath %>/x/<%= moduleName %>/types";
7 |
8 | // Module is the config object for the module.
9 | message Module {
10 | option (cosmos.app.v1alpha1.module) = {
11 | go_import: "<%= modulePath %>/x/<%= moduleName %>"
12 | };
13 |
14 | // authority defines the custom module authority.
15 | // If not set, defaults to the governance module.
16 | string authority = 1;
17 |
18 | <%= for (i, config) in configs { %>
19 | <%= config.ProtoType(i+2) %>;<% } %>
20 | }
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/genesis.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | import "amino/amino.proto";
5 | import "gogoproto/gogo.proto";
6 | import "<%= appName %>/<%= moduleName %>/<%= protoVer %>/params.proto";
7 |
8 | option go_package = "<%= modulePath %>/x/<%= moduleName %>/types";
9 |
10 | // GenesisState defines the <%= moduleName %> module's genesis state.
11 | message GenesisState {
12 | // params defines all the parameters of the module.
13 | Params params = 1 [
14 | (gogoproto.nullable) = false,
15 | (amino.dont_omitempty) = true
16 | ];
17 | }
18 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/base/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/params.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | import "amino/amino.proto";
5 | import "gogoproto/gogo.proto";
6 |
7 | option go_package = "<%= modulePath %>/x/<%= moduleName %>/types";
8 |
9 | // Params defines the parameters for the module.
10 | message Params {
11 | option (amino.name) = "<%= appName %>/x/<%= moduleName %>/Params";
12 | option (gogoproto.equal) = true;
13 | <%= for (i, param) in params { %>
14 | <%= param.ProtoType(i+1) %>;<% } %>
15 | }
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/ibc/x/{{moduleName}}/client/cli/tx.go.plush:
--------------------------------------------------------------------------------
1 | package cli
2 |
3 | import (
4 | "fmt"
5 | "time"
6 |
7 | "github.com/spf13/cobra"
8 |
9 | "github.com/cosmos/cosmos-sdk/client"
10 | // "github.com/cosmos/cosmos-sdk/client/flags"
11 | "<%= modulePath %>/x/<%= moduleName %>/types"
12 | )
13 |
14 | var DefaultRelativePacketTimeoutTimestamp = uint64((time.Duration(10) * time.Minute).Nanoseconds())
15 |
16 | const listSeparator = ","
17 |
18 | // GetTxCmd returns the transaction commands for this module.
19 | func GetTxCmd() *cobra.Command {
20 | cmd := &cobra.Command{
21 | Use: types.ModuleName,
22 | Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName),
23 | DisableFlagParsing: true,
24 | SuggestionsMinimumDistance: 2,
25 | RunE: client.ValidateCmd,
26 | }
27 |
28 | // this line is used by starport scaffolding # 1
29 |
30 | return cmd
31 | }
32 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/ibc/x/{{moduleName}}/types/events_ibc.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | // IBC events
4 | const (
5 | EventTypeTimeout = "timeout"
6 | // this line is used by starport scaffolding # ibc/packet/event
7 |
8 | AttributeKeyAckSuccess = "success"
9 | AttributeKeyAck = "acknowledgement"
10 | AttributeKeyAckError = "error"
11 | )
12 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/ibc/x/{{moduleName}}/types/expected_ibc_keeper.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | "context"
5 |
6 | clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types"
7 | channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types"
8 | )
9 |
10 | // ChannelKeeper defines the expected IBC channel keeper.
11 | type ChannelKeeper interface {
12 | GetChannel(ctx context.Context, portID, channelID string) (channeltypes.Channel, bool)
13 | GetNextSequenceSend(ctx context.Context, portID, channelID string) (uint64, bool)
14 | SendPacket(
15 | ctx context.Context,
16 | sourcePort string,
17 | sourceChannel string,
18 | timeoutHeight clienttypes.Height,
19 | timeoutTimestamp uint64,
20 | data []byte,
21 | ) (uint64, error)
22 | ChanCloseInit(ctx context.Context, portID, channelID string) error
23 | }
--------------------------------------------------------------------------------
/ignite/templates/module/create/files/ibc/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/packet.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | option go_package = "<%= modulePath %>/x/<%= moduleName %>/types";
5 |
6 | // <%= title(moduleName) %>PacketData defines the <%= title(moduleName) %> data packet.
7 | message <%= title(moduleName) %>PacketData {
8 | oneof packet {
9 | NoData noData = 1;
10 | }
11 | }
12 |
13 | // NoData defines an empty data packet.
14 | message NoData {
15 | }
16 |
--------------------------------------------------------------------------------
/ignite/templates/module/create/templates.go:
--------------------------------------------------------------------------------
1 | package modulecreate
2 |
3 | import (
4 | "embed"
5 | )
6 |
7 | var (
8 | //go:embed files/base/* files/base/**/*
9 | fsBase embed.FS
10 |
11 | //go:embed files/ibc/* files/ibc/**/*
12 | fsIBC embed.FS
13 | )
14 |
--------------------------------------------------------------------------------
/ignite/templates/query/files/x/{{moduleName}}/keeper/query_{{queryName}}.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 |
6 | "<%= ModulePath %>/x/<%= ModuleName %>/types"
7 | "google.golang.org/grpc/codes"
8 | "google.golang.org/grpc/status"
9 | )
10 |
11 | func (q queryServer) <%= QueryName.PascalCase %>(ctx context.Context, req *types.Query<%= QueryName.PascalCase %>Request) (*types.Query<%= QueryName.PascalCase %>Response, error) {
12 | if req == nil {
13 | return nil, status.Error(codes.InvalidArgument, "invalid request")
14 | }
15 |
16 | // TODO: Process the query
17 |
18 | return &types.Query<%= QueryName.PascalCase %>Response{}, nil
19 | }
20 |
--------------------------------------------------------------------------------
/ignite/templates/query/options.go:
--------------------------------------------------------------------------------
1 | package query
2 |
3 | import (
4 | "path/filepath"
5 |
6 | "github.com/ignite/cli/v29/ignite/pkg/multiformatname"
7 | "github.com/ignite/cli/v29/ignite/templates/field"
8 | )
9 |
10 | // Options ...
11 | type Options struct {
12 | AppName string
13 | ProtoDir string
14 | ProtoVer string
15 | ModuleName string
16 | ModulePath string
17 | QueryName multiformatname.Name
18 | Description string
19 | ResFields field.Fields
20 | ReqFields field.Fields
21 | Paginated bool
22 | }
23 |
24 | // ProtoFile returns the path to the proto folder.
25 | func (opts *Options) ProtoFile(fname string) string {
26 | return filepath.Join(opts.ProtoDir, opts.AppName, opts.ModuleName, opts.ProtoVer, fname)
27 | }
28 |
--------------------------------------------------------------------------------
/ignite/templates/query/placeholders.go:
--------------------------------------------------------------------------------
1 | package query
2 |
3 | const PlaceholderAutoCLIQuery = "// this line is used by ignite scaffolding # autocli/query"
4 |
--------------------------------------------------------------------------------
/ignite/templates/typed/dry/dry.go:
--------------------------------------------------------------------------------
1 | package dry
2 |
3 | import (
4 | "embed"
5 | "io/fs"
6 |
7 | "github.com/gobuffalo/genny/v2"
8 |
9 | "github.com/ignite/cli/v29/ignite/pkg/errors"
10 | "github.com/ignite/cli/v29/ignite/templates/typed"
11 | )
12 |
13 | //go:embed files/component/* files/component/**/*
14 | var fsComponent embed.FS
15 |
16 | // NewGenerator returns the generator to scaffold a basic type in module.
17 | func NewGenerator(opts *typed.Options) (*genny.Generator, error) {
18 | subFs, err := fs.Sub(fsComponent, "files/component")
19 | if err != nil {
20 | return nil, errors.Errorf("fail to generate sub: %w", err)
21 | }
22 | g := genny.New()
23 | return g, typed.Box(subFs, opts, g)
24 | }
25 |
--------------------------------------------------------------------------------
/ignite/templates/typed/dry/files/component/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/{{typeName}}.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | option go_package = "<%= ModulePath %>/x/<%= ModuleName %>/types";<%= for (importName) in mergeCustomImports(Fields) { %>
5 | import "<%= appName %>/<%= moduleName %>/<%= protoVer %>/<%= importName %>.proto"; <% } %><%= for (importName) in mergeProtoImports(Fields) { %>
6 | import "<%= importName %>"; <% } %>
7 |
8 | // <%= TypeName.PascalCase %> defines the <%= TypeName.UpperCamel %> message.
9 | message <%= TypeName.PascalCase %> {
10 | <%= for (i, field) in Fields { %>
11 | <%= field.ProtoType(i+1) %>; <% } %>
12 | }
13 |
--------------------------------------------------------------------------------
/ignite/templates/typed/genesis.go:
--------------------------------------------------------------------------------
1 | package typed
2 |
3 | // ProtoGenesisStateMessage is the name of the proto message that represents the genesis state.
4 | const ProtoGenesisStateMessage = "GenesisState"
5 |
--------------------------------------------------------------------------------
/ignite/templates/typed/list/files/component/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/{{typeName}}.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | option go_package = "<%= ModulePath %>/x/<%= ModuleName %>/types";<%= for (importName) in mergeCustomImports(Fields) { %>
5 | import "<%= AppName %>/<%= ModuleName %>/<%= ProtoVer %>/<%= importName %>.proto"; <% } %><%= for (importName) in mergeProtoImports(Fields) { %>
6 | import "<%= importName %>"; <% } %>
7 |
8 | // <%= TypeName.PascalCase %> defines the <%= TypeName.PascalCase %> message.
9 | message <%= TypeName.PascalCase %> {
10 | uint64 id = 1;<%= for (i, field) in Fields { %>
11 | <%= field.ProtoType(i+2) %>; <% } %>
12 | <%= if (!NoMessage) { %>string <%= MsgSigner.Snake %> = <%= len(Fields)+2 %>;<% } %>
13 | }
14 |
--------------------------------------------------------------------------------
/ignite/templates/typed/map/files/component/x/{{moduleName}}/types/key_{{typeName}}.go.plush:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import "cosmossdk.io/collections"
4 |
5 | // <%= TypeName.PascalCase %>Key is the prefix to retrieve all <%= TypeName.PascalCase %>
6 | var <%= TypeName.PascalCase %>Key = collections.NewPrefix("<%= TypeName.LowerCamel %>/value/")
--------------------------------------------------------------------------------
/ignite/templates/typed/map/files/component/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/{{typeName}}.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | option go_package = "<%= ModulePath %>/x/<%= ModuleName %>/types";<%= for (importName) in appendFieldsAndMergeCustomImports(Index, Fields) { %>
5 | import "<%= AppName %>/<%= ModuleName %>/<%= ProtoVer %>/<%= importName %>.proto"; <% } %><%= for (importName) in mergeProtoImports(Fields) { %>
6 | import "<%= importName %>"; <% } %>
7 |
8 | // <%= TypeName.PascalCase %> defines the <%= TypeName.PascalCase %> message.
9 | message <%= TypeName.PascalCase %> {
10 | <%= Index.ProtoType(1) %>; <%= for (i, field) in Fields { %>
11 | <%= field.ProtoType(i+2) %>; <% } %>
12 | <%= if (!NoMessage) { %>string <%= MsgSigner.Snake %> = <%= len(Fields)+2 %>;<% } %>
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/ignite/templates/typed/placeholders.go:
--------------------------------------------------------------------------------
1 | package typed
2 |
3 | //nolint:godot
4 | const (
5 | Placeholder4 = ""
6 |
7 | // Placeholders AutoCLI
8 | PlaceholderAutoCLIQuery = "// this line is used by ignite scaffolding # autocli/query"
9 | PlaceholderAutoCLITx = "// this line is used by ignite scaffolding # autocli/tx"
10 | )
11 |
--------------------------------------------------------------------------------
/ignite/templates/typed/proto.go:
--------------------------------------------------------------------------------
1 | package typed
2 |
3 | const (
4 | // GoGoProtoImport is the import path for the gogoproto package.
5 | GoGoProtoImport = "gogoproto/gogo.proto"
6 | // MsgSignerOption correspond to the proto annotation for defining a message signer.
7 | MsgSignerOption = "(cosmos.msg.v1.signer)"
8 | )
9 |
--------------------------------------------------------------------------------
/ignite/templates/typed/singleton/files/component/x/{{moduleName}}/keeper/query_{{typeName}}.go.plush:
--------------------------------------------------------------------------------
1 | package keeper
2 |
3 | import (
4 | "context"
5 | "errors"
6 |
7 | "cosmossdk.io/collections"
8 |
9 | "<%= ModulePath %>/x/<%= ModuleName %>/types"
10 | "google.golang.org/grpc/codes"
11 | "google.golang.org/grpc/status"
12 | )
13 |
14 | func (q queryServer) Get<%= TypeName.PascalCase %>(ctx context.Context, req *types.QueryGet<%= TypeName.PascalCase %>Request) (*types.QueryGet<%= TypeName.PascalCase %>Response, error) {
15 | if req == nil {
16 | return nil, status.Error(codes.InvalidArgument, "invalid request")
17 | }
18 |
19 | val, err := q.k.<%= TypeName.UpperCamel %>.Get(ctx)
20 | if err != nil {
21 | if errors.Is(err, collections.ErrNotFound) {
22 | return nil, status.Error(codes.NotFound, "not found")
23 | }
24 |
25 | return nil, status.Error(codes.Internal, "internal error")
26 | }
27 |
28 | return &types.QueryGet<%= TypeName.PascalCase %>Response{<%= TypeName.UpperCamel %>: val}, nil
29 | }
--------------------------------------------------------------------------------
/ignite/templates/typed/singleton/files/component/{{protoDir}}/{{appName}}/{{moduleName}}/{{protoVer}}/{{typeName}}.proto.plush:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 | package <%= protoPkgName %>;
3 |
4 | option go_package = "<%= ModulePath %>/x/<%= ModuleName %>/types";<%= for (importName) in mergeCustomImports(Fields) { %>
5 | import "<%= appName %>/<%= moduleName %>/<%= ProtoVer %>/<%= importName %>.proto"; <% } %><%= for (importName) in mergeProtoImports(Fields) { %>
6 | import "<%= importName %>"; <% } %>
7 |
8 | // <%= TypeName.PascalCase %> defines the <%= TypeName.PascalCase %> message.
9 | message <%= TypeName.PascalCase %> {<%= for (i, field) in Fields { %>
10 | <%= field.ProtoType(i+1) %>; <% } %>
11 | <%= if (!NoMessage) { %>string <%= MsgSigner.Snake %> = <%= len(Fields)+1 %>;<% } %>
12 | }
13 |
--------------------------------------------------------------------------------
/ignite/templates/typed/singleton/simulation.go:
--------------------------------------------------------------------------------
1 | package singleton
2 |
3 | import (
4 | "path/filepath"
5 |
6 | "github.com/gobuffalo/genny/v2"
7 |
8 | "github.com/ignite/cli/v29/ignite/templates/typed"
9 | )
10 |
11 | func moduleSimulationModify(opts *typed.Options) genny.RunFn {
12 | return func(r *genny.Runner) error {
13 | path := filepath.Join("x", opts.ModuleName, "module/simulation.go")
14 | f, err := r.Disk.Find(path)
15 | if err != nil {
16 | return err
17 | }
18 |
19 | content, err := typed.ModuleSimulationMsgModify(
20 | f.String(),
21 | opts.ModulePath,
22 | opts.ModuleName,
23 | opts.TypeName,
24 | opts.MsgSigner,
25 | "Create", "Update", "Delete",
26 | )
27 | if err != nil {
28 | return err
29 | }
30 |
31 | newFile := genny.NewFileS(path, content)
32 | return r.File(newFile)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/integration/account/testdata/key:
--------------------------------------------------------------------------------
1 | -----BEGIN TENDERMINT PRIVATE KEY-----
2 | kdf: bcrypt
3 | salt: DF141717258C6DFA02F3531A7606CC06
4 | type: secp256k1
5 |
6 | 7iYel/9+f4pY772S1WstIgUxzTTK81sXHtzI0YnmvbrH4wcbM/yfe1VPJJ11L6WT
7 | dxs0v9A4DjwD9dOY73+zQc6NypB07OlyOykJXcA=
8 | =Dojr
9 | -----END TENDERMINT PRIVATE KEY-----
--------------------------------------------------------------------------------
/integration/doctor/testdata/config-missing.txt:
--------------------------------------------------------------------------------
1 | # Test fix config
2 | # config is missing
3 | ! exec $IGNITE doctor
4 | stdout 'Could not locate a config.yml in your chain'
5 |
--------------------------------------------------------------------------------
/integration/doctor/testdata/config-ok.txt:
--------------------------------------------------------------------------------
1 | # Test fix config
2 | # config is OK
3 | exec $IGNITE doctor
4 | stdout 'config file OK'
5 |
6 | -- config.yml --
7 | version: 1
8 | -- go.mod --
9 | module github.com/ignite/cli
10 |
11 | go 1.20
12 |
--------------------------------------------------------------------------------
/integration/testdata/tstestrunner/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tstestrunner",
3 | "version": "1.0.0",
4 | "private": true,
5 | "description": "Test Runner for the TS Client",
6 | "license": "ISC",
7 | "scripts": {
8 | "test": "vitest --run"
9 | },
10 | "devDependencies": {
11 | "@types/glob": "^7.2.0",
12 | "@types/node": "^17.0.31",
13 | "glob": "^8.0.1",
14 | "isomorphic-unfetch": "^3.1.0",
15 | "vitest": "^0.10.2"
16 | },
17 | "dependencies": {
18 | "@cosmjs/proto-signing": "^0.27.0",
19 | "@cosmjs/stargate": "^0.27.0"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/integration/testdata/tstestrunner/testutil/setup.ts:
--------------------------------------------------------------------------------
1 | import { beforeAll, expect } from "vitest";
2 |
3 | // Make sure that the tests have fetch API support
4 | import "isomorphic-unfetch";
5 |
6 | type Account = {
7 | Name: string;
8 | Address: string;
9 | Mnemonic: string;
10 | Coins: string[];
11 | };
12 |
13 | type GlobalAccounts = {
14 | [name: string]: Account;
15 | };
16 |
17 | beforeAll(() => {
18 | // Initialize required globals
19 | globalThis.txApi = process.env.TEST_TX_API || "";
20 | globalThis.queryApi = process.env.TEST_QUERY_API || "";
21 |
22 | expect(globalThis.txApi, "TEST_TX_API is required").not.toEqual("");
23 | expect(globalThis.queryApi, "TEST_QUERY_API is required").not.toEqual("");
24 |
25 | // Initialize the global accounts
26 | globalThis.accounts = {};
27 |
28 | JSON.parse(process.env.TEST_ACCOUNTS || "[]").forEach((account: Account) => {
29 | globalThis.accounts[account.Name] = account;
30 | });
31 | });
32 |
--------------------------------------------------------------------------------
/integration/testdata/tstestrunner/vitest.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vitest/config";
2 |
3 | // TODO: add .env file support for a better developer experience ? It would allow
4 | // writting new tests agains a running blockchain without the need of scaffolding
5 | // a new one for each test run.
6 |
7 | export default defineConfig({
8 | test: {
9 | include: ["**/*_test.ts"],
10 | globals: true,
11 | setupFiles: "testutil/setup.ts",
12 | testTimeout: 600000, // milliseconds
13 | },
14 | resolve: {
15 | alias: {
16 | client: process.env.TEST_TSCLIENT_DIR,
17 | },
18 | },
19 | });
20 |
--------------------------------------------------------------------------------
/packaging/.gitignore:
--------------------------------------------------------------------------------
1 | build-dir
2 | repo
3 | *.snap
--------------------------------------------------------------------------------
/packaging/brew/ignite.rb:
--------------------------------------------------------------------------------
1 | class Ignite < Formula
2 | desc "Build, launch, and maintain any crypto application with Ignite CLI"
3 | homepage "https://github.com/ignite/cli"
4 | url "https://github.com/ignite/cli/archive/refs/tags/v28.2.0.tar.gz"
5 | sha256 "556f953fd7f922354dea64e7b3dade5dd75b3f62ece93167e2ba126cac27602e"
6 | license "Apache-2.0"
7 |
8 | depends_on "go"
9 | depends_on "node"
10 |
11 | def install
12 | system "go", "build", "-mod=readonly", *std_go_args(output: bin/"ignite"), "./ignite/cmd/ignite"
13 | end
14 |
15 | test do
16 | ENV["DO_NOT_TRACK"] = "1"
17 | system bin/"ignite", "s", "chain", "mars"
18 | assert_predicate testpath/"mars/go.mod", :exist?
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/proto/buf.gen.yaml:
--------------------------------------------------------------------------------
1 | version: v2
2 | plugins:
3 | - remote: buf.build/protocolbuffers/go
4 | out: .
5 | opt: paths=source_relative
6 | - remote: buf.build/grpc/go
7 | out: .
8 | opt: paths=source_relative
9 |
--------------------------------------------------------------------------------
/proto/buf.md:
--------------------------------------------------------------------------------
1 | # Protobufs
2 |
3 | This is the public protocol buffers API for [Ignite CLI](https://github.com/ignite/cli).
4 |
--------------------------------------------------------------------------------
/proto/ignite/services/plugin/grpc/v1/client_api.proto:
--------------------------------------------------------------------------------
1 | syntax = "proto3";
2 |
3 | package ignite.services.plugin.grpc.v1;
4 |
5 | option go_package = "github.com/ignite/cli/v29/ignite/services/plugin/grpc/v1";
6 |
7 | message ChainInfo {
8 | string chain_id = 1;
9 | string app_path = 2;
10 | string config_path = 3;
11 | string rpc_address = 4;
12 | string home = 5;
13 | }
14 |
15 | message IgniteInfo {
16 | string cli_version = 1;
17 | string go_version = 2;
18 | string sdk_version = 3;
19 | string buf_version = 4;
20 | string build_date = 5;
21 | string source_hash = 6;
22 | string config_version = 7;
23 | string os = 8;
24 | string arch = 9;
25 | bool build_from_source = 10;
26 | }
27 |
--------------------------------------------------------------------------------
/scripts/gen-cli-docs:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | go run ignite/internal/tools/gen-cli-docs/*.go --out docs/docs/03-CLI-Commands/01-cli-commands.md
4 |
--------------------------------------------------------------------------------
/scripts/gen-config-doc:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd ignite/internal/tools/gen-config-doc || exit
4 |
5 | go run .
6 |
7 | rsync -av docs ../../../../
8 | rm -r docs
--------------------------------------------------------------------------------
/scripts/gen-mig-diffs:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd ignite/internal/tools/gen-mig-diffs
4 | go run .
--------------------------------------------------------------------------------
/scripts/go-mod-tidy-all.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -euo pipefail
4 |
5 | for modfile in $(find . -name go.mod); do
6 | echo "Updating $modfile"
7 | DIR=$(dirname $modfile)
8 | if [[ $DIR == *"testdata"* ]]; then
9 | echo "Skipping testdata directory"
10 | continue
11 | fi
12 | (cd $DIR; go mod tidy)
13 | done
14 |
--------------------------------------------------------------------------------
/scripts/test:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e -x
3 |
4 | go test -race $(go list github.com/ignite/cli/v29/ignite/...)
--------------------------------------------------------------------------------
/scripts/test-coverage:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e -x
3 |
4 | go test -race -coverprofile=coverage.txt -covermode=atomic -coverpkg=./... $(go list github.com/ignite/cli/v29/ignite/...)
5 |
6 | # append "||true" to grep so if no match the return code stays 0
7 | excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER' || true)"
8 | excludelist+=" $(find ./ -type f -name '*.pb.go')"
9 | excludelist+=" $(find ./ -type f -name '*.pb.gw.go')"
10 | excludelist+=" $(find ./actions -type d)"
11 | excludelist+=" $(find ./assets -type d)"
12 | excludelist+=" $(find ./docs -type d)"
13 | excludelist+=" $(find ./integration -type d)"
14 | excludelist+=" $(find ./scripts -type d)"
15 | for filename in ${excludelist}; do
16 | filename=${filename#".//"}
17 | echo "Excluding ${filename} from coverage report..."
18 | filename=$(echo "$filename" | sed 's/\//\\\//g')
19 | sed -i.bak "/""$filename""/d" coverage.txt
20 | done
21 |
--------------------------------------------------------------------------------
/scripts/test-integration:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | go test -v -timeout 30m github.com/ignite/cli/v29/integration/...
4 |
--------------------------------------------------------------------------------
/scripts/test-unit:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | go test -v github.com/ignite/cli/v29/ignite/...
4 |
--------------------------------------------------------------------------------