├── .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 | 2 | 3 | 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 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /docs/static/img/logo/kyve.svg: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 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 | --------------------------------------------------------------------------------