From fc642ec3a6f27293653ea14961008c4f56cf227b Mon Sep 17 00:00:00 2001 From: Pantani Date: Fri, 9 Feb 2024 21:07:14 -0300 Subject: [PATCH] use chain into the scaffold struct --- official/wasm/cmd/cmd.go | 36 +++++++++++-- official/wasm/cmd/wasm.go | 16 ++++-- official/wasm/go.mod | 15 +++++- official/wasm/go.sum | 33 ++++++++++++ .../wasm/services/scaffolder/scaffolder.go | 53 ++++++------------- official/wasm/services/scaffolder/wasm.go | 35 +++++++----- official/wasm/templates/wasm/wasm.go | 2 + 7 files changed, 128 insertions(+), 62 deletions(-) diff --git a/official/wasm/cmd/cmd.go b/official/wasm/cmd/cmd.go index c66b695d..83b598c4 100644 --- a/official/wasm/cmd/cmd.go +++ b/official/wasm/cmd/cmd.go @@ -8,11 +8,13 @@ import ( "github.com/ignite/cli/v28/ignite/pkg/cliui/colors" "github.com/ignite/cli/v28/ignite/pkg/xgenny" + "github.com/ignite/cli/v28/ignite/services/chain" "github.com/spf13/cobra" ) const ( flagPath = "path" + flagHome = "home" statusScaffolding = "Scaffolding..." ) @@ -25,15 +27,39 @@ var ( } ) -func flagGetPath(cmd *cobra.Command) (path string) { - path, _ = cmd.Flags().GetString(flagPath) - return -} - func flagSetPath(cmd *cobra.Command) { cmd.PersistentFlags().StringP(flagPath, "p", ".", "path of the app") } +func flagSetHome(cmd *cobra.Command) { + cmd.PersistentFlags().String(flagHome, "", "directory where the blockchain node is initialized") +} + +func getPath(cmd *cobra.Command) string { + path, _ := cmd.Flags().GetString(flagPath) + return path +} + +func getHome(cmd *cobra.Command) string { + home, _ := cmd.Flags().GetString(flagHome) + return home +} + +func newChainWithHomeFlags(cmd *cobra.Command, chainOption ...chain.Option) (*chain.Chain, error) { + // Check if custom home is provided + if home := getHome(cmd); home != "" { + chainOption = append(chainOption, chain.HomePath(home)) + } + + appPath := getPath(cmd) + absPath, err := filepath.Abs(appPath) + if err != nil { + return nil, err + } + + return chain.New(absPath, chainOption...) +} + func sourceModificationToString(sm xgenny.SourceModification) (string, error) { // get file names and add prefix var files []string diff --git a/official/wasm/cmd/wasm.go b/official/wasm/cmd/wasm.go index 370c8008..1ba8578c 100644 --- a/official/wasm/cmd/wasm.go +++ b/official/wasm/cmd/wasm.go @@ -1,11 +1,12 @@ package cmd import ( - "wasm/services/scaffolder" - "github.com/ignite/cli/v28/ignite/pkg/cliui" "github.com/ignite/cli/v28/ignite/pkg/placeholder" + "github.com/ignite/cli/v28/ignite/services/chain" "github.com/spf13/cobra" + + "wasm/services/scaffolder" ) // NewWasm creates a new wasm command that holds @@ -36,6 +37,7 @@ func NewWasmAdd() *cobra.Command { } flagSetPath(c) + flagSetHome(c) return c } @@ -44,8 +46,12 @@ func wasmAddExecuteHandler(cmd *cobra.Command, args []string) error { session := cliui.New(cliui.StartSpinnerWithText(statusScaffolding)) defer session.End() - appPath := flagGetPath(cmd) - sc, err := scaffolder.New(appPath) + c, err := newChainWithHomeFlags(cmd, chain.WithOutputer(session), chain.CollectEvents(session.EventBus())) + if err != nil { + return err + } + + sc, err := scaffolder.New(c) if err != nil { return err } @@ -61,7 +67,7 @@ func wasmAddExecuteHandler(cmd *cobra.Command, args []string) error { } session.Println(modificationsStr) - session.Printf("\nšŸŽ‰ CosmWasm added (`%[1]v`).\n\n", appPath) + session.Printf("\nšŸŽ‰ CosmWasm added (`%[1]v`).\n\n", c.AppPath()) return nil } diff --git a/official/wasm/go.mod b/official/wasm/go.mod index 1761f411..af8c9832 100644 --- a/official/wasm/go.mod +++ b/official/wasm/go.mod @@ -9,6 +9,7 @@ require ( github.com/gobuffalo/plush/v4 v4.1.19 github.com/hashicorp/go-plugin v1.5.2 github.com/ignite/cli/v28 v28.1.1 + github.com/pkg/errors v0.9.1 github.com/spf13/cobra v1.8.0 github.com/stretchr/testify v1.8.4 ) @@ -53,6 +54,7 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cometbft/cometbft v0.38.2 // indirect github.com/cometbft/cometbft-db v0.9.1 // indirect + github.com/containerd/containerd v1.7.11 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-db v1.0.0 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.3 // indirect @@ -71,6 +73,7 @@ require ( github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/docker/docker v24.0.7+incompatible // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/emicklei/dot v1.6.0 // indirect @@ -124,6 +127,9 @@ require ( github.com/hdevalence/ed25519consensus v0.1.0 // indirect github.com/huandu/skiplist v1.2.0 // indirect github.com/iancoleman/strcase v0.3.0 // indirect + github.com/ignite/ignite-files/nodetime v0.0.4 // indirect + github.com/ignite/ignite-files/protoc v0.0.1 // indirect + github.com/ignite/web v0.6.1 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -147,20 +153,27 @@ require ( github.com/microcosm-cc/bluemonday v1.0.23 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/moby v24.0.7+incompatible // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/sequential v0.5.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.14.0 // indirect + github.com/nqd/flat v0.2.0 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect github.com/oklog/run v1.1.0 // indirect + github.com/opencontainers/runc v1.1.7 // indirect + github.com/otiai10/copy v1.14.0 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.17.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.45.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect + github.com/radovskyb/watcher v1.0.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect diff --git a/official/wasm/go.sum b/official/wasm/go.sum index dc9777b0..402f58cb 100644 --- a/official/wasm/go.sum +++ b/official/wasm/go.sum @@ -62,6 +62,8 @@ github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMb github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -74,6 +76,8 @@ github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -187,6 +191,8 @@ github.com/cometbft/cometbft v0.38.2 h1:io0JCh5EPxINKN5ZMI5hCdpW3QVZRy+o8qWe3mlJ github.com/cometbft/cometbft v0.38.2/go.mod h1:PIi48BpzwlHqtV3mzwPyQgOyOnU94BNBimLS2ebBHOg= github.com/cometbft/cometbft-db v0.9.1 h1:MIhVX5ja5bXNHF8EYrThkG9F7r9kSfv8BX4LWaxWJ4M= github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= +github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= +github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -243,6 +249,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= @@ -552,6 +560,13 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1: github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ignite/cli/v28 v28.1.1 h1:Kj/6UdQfPBwP/MZ3TVQPpfhAhfztM7PebloN/fOHzgU= github.com/ignite/cli/v28 v28.1.1/go.mod h1:Z73HiXgw1bJL948CiUudGOfMyiYwCnwkcjcRs/Td/pk= +github.com/ignite/ignite-files/nodetime v0.0.4 h1:4mA/lZTAWczsNBHZ543VSxpK+P6BAU0HsLglxUtRrMU= +github.com/ignite/ignite-files/nodetime v0.0.4/go.mod h1:GKDsXdeazHyhSBPdVLp7mNIo/m9LmZ6/h8RmQ0/CoaM= +github.com/ignite/ignite-files/protoc v0.0.1 h1:wXxU1dzruUgSVl1diAuAOA+xv0NQKXJFsDWht2+tAP8= +github.com/ignite/ignite-files/protoc v0.0.1/go.mod h1:cVCHJbEHPIeKHMPk3ZoPS0Xw4XQfUc76BAMAPU9Fwjg= +github.com/ignite/web v0.6.1 h1:kHG+T7NnR8cCPjAGxEFQD+njVYM08toeG57iYRXzpwo= +github.com/ignite/web v0.6.1/go.mod h1:WZWBaBYF8RazN7dE462BLpvXDY8ScacxcJ07BKwX/jY= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= @@ -670,6 +685,12 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/moby/moby v24.0.7+incompatible h1:RrVT5IXBn85mRtFKP+gFwVLCcnNPZIgN3NVRJG9Le+4= +github.com/moby/moby v24.0.7+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -697,6 +718,8 @@ github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxzi github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nqd/flat v0.2.0 h1:g6lXtMxsxrz6PZOO+rNnAJUn/GGRrK4FgVEhy/v+cHI= +github.com/nqd/flat v0.2.0/go.mod h1:FOuslZmNY082wVfVUUb7qAGWKl8z8Nor9FMg+Xj2Nss= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -722,6 +745,8 @@ github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9 github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk= +github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -730,12 +755,18 @@ github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxS github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= @@ -791,6 +822,8 @@ github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/radovskyb/watcher v1.0.7 h1:AYePLih6dpmS32vlHfhCeli8127LzkIgwJGcwwe8tUE= +github.com/radovskyb/watcher v1.0.7/go.mod h1:78okwvY5wPdzcb1UYnip1pvrZNIVEIh/Cm+ZuvsUYIg= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= diff --git a/official/wasm/services/scaffolder/scaffolder.go b/official/wasm/services/scaffolder/scaffolder.go index 6bae3719..17cf18fb 100644 --- a/official/wasm/services/scaffolder/scaffolder.go +++ b/official/wasm/services/scaffolder/scaffolder.go @@ -2,13 +2,14 @@ package scaffolder import ( "context" + "os" "path/filepath" "github.com/ignite/cli/v28/ignite/pkg/cosmosanalysis" "github.com/ignite/cli/v28/ignite/pkg/cosmosver" "github.com/ignite/cli/v28/ignite/pkg/errors" "github.com/ignite/cli/v28/ignite/pkg/gocmd" - "github.com/ignite/cli/v28/ignite/pkg/gomodulepath" + "github.com/ignite/cli/v28/ignite/services/chain" ) const ( @@ -17,55 +18,31 @@ const ( Please, follow the migration guide to upgrade your chain to the latest version at https://docs.ignite.com/migration` ) -// Scaffolder is Ignite CLI app scaffolder. +// Scaffolder is Wasm app scaffolder. type Scaffolder struct { - // Version of the chain - Version cosmosver.Version - - // path of the app. - path string - - // modpath represents the go module path of the app. - modpath gomodulepath.Path + chain *chain.Chain } // New creates a new scaffold app. -func New(appPath string) (Scaffolder, error) { - path, err := filepath.Abs(appPath) - if err != nil { - return Scaffolder{}, err - } - - modpath, path, err := gomodulepath.Find(path) - if err != nil { - return Scaffolder{}, err - } - - ver, err := cosmosver.Detect(path) - if err != nil { +func New(c *chain.Chain) (Scaffolder, error) { + if err := cosmosanalysis.IsChainPath(c.AppPath()); err != nil { return Scaffolder{}, err } - - // Make sure that the app was scaffolded with a supported Cosmos SDK version - if err := AssertSupportedCosmosSDKVersion(ver); err != nil { - return Scaffolder{}, err - } - - if err := cosmosanalysis.IsChainPath(path); err != nil { + if err := assertSupportedCosmosSDKVersion(c.Version); err != nil { return Scaffolder{}, err } + return Scaffolder{chain: c}, nil +} - s := Scaffolder{ - Version: ver, - path: path, - modpath: modpath, +func hasWasm(appPath string) bool { + if _, err := os.Stat(filepath.Join(appPath, "app/wasm.go")); err == nil { + return true } - - return s, nil + return false } -// AssertSupportedCosmosSDKVersion asserts that a Cosmos SDK version is supported by Ignite CLI. -func AssertSupportedCosmosSDKVersion(v cosmosver.Version) error { +// assertSupportedCosmosSDKVersion asserts that a Cosmos SDK version is supported by Ignite CLI. +func assertSupportedCosmosSDKVersion(v cosmosver.Version) error { if v.LT(cosmosver.StargateFiftyVersion) { return errors.Errorf(errOldCosmosSDKVersionStr, v) } diff --git a/official/wasm/services/scaffolder/wasm.go b/official/wasm/services/scaffolder/wasm.go index 0df74976..c42846eb 100644 --- a/official/wasm/services/scaffolder/wasm.go +++ b/official/wasm/services/scaffolder/wasm.go @@ -7,6 +7,7 @@ import ( "github.com/ignite/cli/v28/ignite/pkg/placeholder" "github.com/ignite/cli/v28/ignite/pkg/xgenny" + "github.com/pkg/errors" ) const ( @@ -16,7 +17,7 @@ const ( type ( // wasmOptions represents configuration for the message scaffolding. wasmOptions struct { - description string + home string } // WasmOption configures the message scaffolding. WasmOption func(*wasmOptions) @@ -24,15 +25,13 @@ type ( // newWasmOptions returns a wasmOptions with default options. func newWasmOptions() wasmOptions { - return wasmOptions{ - description: "test", - } + return wasmOptions{} } -// WithDescription provides a custom description for the message CLI command. -func WithDescription(desc string) WasmOption { +// WithHome provides a custom chain home path. +func WithHome(home string) WasmOption { return func(m *wasmOptions) { - m.description = desc + m.home = home } } @@ -41,24 +40,34 @@ func (s Scaffolder) AddWasm( ctx context.Context, tracer *placeholder.Tracer, options ...WasmOption, -) (sm xgenny.SourceModification, err error) { +) (xgenny.SourceModification, error) { + path := s.chain.AppPath() + if hasWasm(path) { + return xgenny.SourceModification{}, errors.Errorf("wasm integration already exist for path %s", path) + } + + home, err := s.chain.Home() + if err != nil { + return xgenny.SourceModification{}, err + } + // Create the options scaffoldingOpts := newWasmOptions() for _, apply := range options { apply(&scaffoldingOpts) } - opts := &wasm.Options{ - AppName: s.modpath.Package, - AppPath: s.path, + AppName: s.chain.Name(), + AppPath: path, + Home: home, } // Scaffold g, err := wasm.NewWasmGenerator(tracer, opts) if err != nil { - return sm, err + return xgenny.SourceModification{}, err } - sm, err = xgenny.RunWithValidation(tracer, g) + sm, err := xgenny.RunWithValidation(tracer, g) if err != nil { return sm, err } diff --git a/official/wasm/templates/wasm/wasm.go b/official/wasm/templates/wasm/wasm.go index 29d9f744..394e20c6 100644 --- a/official/wasm/templates/wasm/wasm.go +++ b/official/wasm/templates/wasm/wasm.go @@ -22,6 +22,7 @@ var fsAppWasm embed.FS type Options struct { AppName string AppPath string + Home string } // Validate that options are usable. @@ -152,6 +153,7 @@ if err != nil { return err } ibcRouter.AddRoute(wasmtypes.ModuleName, wasmStack) + %[1]v` replacementIBCModule := fmt.Sprintf( templateIBCModule,