Some checks are pending
Docs Deploy / build_and_deploy (push) Waiting to run
Generate Docs / cli (push) Waiting to run
Generate Config Doc / cli (push) Waiting to run
Go formatting / go-formatting (push) Waiting to run
Check links / markdown-link-check (push) Waiting to run
Integration / pre-test (push) Waiting to run
Integration / test on (push) Blocked by required conditions
Integration / status (push) Blocked by required conditions
Lint / Lint Go code (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
119 lines
3.3 KiB
Go
119 lines
3.3 KiB
Go
package scaffold
|
|
|
|
import "github.com/ignite/cli/v29/ignite/pkg/errors"
|
|
|
|
type (
|
|
// Command represents a set of command and prerequisites scaffold command that are required to run before them.
|
|
Command struct {
|
|
// Name is the unique identifier of the command
|
|
Name string
|
|
// Prerequisite is the name of command that need to be run before this command set
|
|
Prerequisite string
|
|
// Commands is the list of scaffold command that are going to be run
|
|
// The command will be prefixed with "ignite scaffold" and executed in order
|
|
Commands []string
|
|
}
|
|
|
|
Commands []Command
|
|
)
|
|
|
|
func (c Commands) Get(name string) (Command, error) {
|
|
for _, cmd := range c {
|
|
if cmd.Name == name {
|
|
return cmd, nil
|
|
}
|
|
}
|
|
return Command{}, errors.Errorf("command %s not exist", name)
|
|
}
|
|
|
|
func (c Commands) Has(name string) bool {
|
|
for _, cmd := range c {
|
|
if cmd.Name == name {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (c Commands) Validate() error {
|
|
cmdMap := make(map[string]bool)
|
|
for i, command := range c {
|
|
if cmdMap[command.Name] {
|
|
return errors.Errorf("duplicate command name found: %s", command.Name)
|
|
}
|
|
cmdMap[command.Name] = true
|
|
if command.Name == "" {
|
|
return errors.Errorf("empty command name at index %d: %v", i, command)
|
|
}
|
|
if len(command.Commands) == 0 {
|
|
return errors.Errorf("empty command list at index %d: %v", i, command)
|
|
}
|
|
}
|
|
for _, command := range c {
|
|
if command.Prerequisite != "" && !cmdMap[command.Prerequisite] {
|
|
return errors.Errorf("command %s pre-requisete %s not found", command.Name, command.Prerequisite)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
var defaultCommands = Commands{
|
|
Command{
|
|
Name: "chain",
|
|
Commands: []string{"chain example --no-module"},
|
|
},
|
|
Command{
|
|
Name: "module",
|
|
Prerequisite: "chain",
|
|
Commands: []string{"module example --ibc"},
|
|
},
|
|
Command{
|
|
Name: "list",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"list list1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "map",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"map map1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --index i1:string --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "single",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"single single1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "type",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"type type1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "message",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"message message1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "query",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"query query1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints --module example --yes",
|
|
},
|
|
},
|
|
Command{
|
|
Name: "packet",
|
|
Prerequisite: "module",
|
|
Commands: []string{
|
|
"packet packet1 f1:string f2:strings f3:bool f4:int f5:ints f6:uint f7:uints f8:coin f9:coins --ack f1:string,f2:strings,f3:bool,f4:int,f5:ints,f6:uint,f7:uints,f8:coin,f9:coins --module example --yes",
|
|
},
|
|
},
|
|
}
|