Path: blob/main/integration/plugin/testdata/example-plugin/main.go
1007 views
package main12import (3"context"4"fmt"56hplugin "github.com/hashicorp/go-plugin"78"github.com/ignite/cli/v29/ignite/services/plugin"9)1011type p struct{}1213func (p) Manifest(context.Context) (*plugin.Manifest, error) {14return &plugin.Manifest{15Name: "example-plugin",16Commands: []*plugin.Command{17{18Use: "example-plugin",19Short: "Explain what the command is doing...",20Long: "Long description goes here...",21Flags: plugin.Flags{22{Name: "my-flag", Type: plugin.FlagTypeString, Usage: "my flag description"},23},24PlaceCommandUnder: "ignite",25},26},27Hooks: []*plugin.Hook{},28}, nil29}3031func (p) Execute(ctx context.Context, cmd *plugin.ExecutedCommand, api plugin.ClientAPI) error {32fmt.Printf("Hello I'm the example-plugin plugin\n")33fmt.Printf("My executed command: %q\n", cmd.Path)34fmt.Printf("My args: %v\n", cmd.Args)3536flags, err := cmd.NewFlags()37if err != nil {38return err39}4041myFlag, _ := flags.GetString("my-flag")42fmt.Printf("My flags: my-flag=%q\n", myFlag)43fmt.Printf("My config parameters: %v\n", cmd.With)4445fmt.Println(api.GetChainInfo(ctx))46fmt.Println(api.GetIgniteInfo(ctx))4748return nil49}5051func (p) ExecuteHookPre(_ context.Context, h *plugin.ExecutedHook, _ plugin.ClientAPI) error {52fmt.Printf("Executing hook pre %q\n", h.Hook.GetName())53return nil54}5556func (p) ExecuteHookPost(_ context.Context, h *plugin.ExecutedHook, _ plugin.ClientAPI) error {57fmt.Printf("Executing hook post %q\n", h.Hook.GetName())58return nil59}6061func (p) ExecuteHookCleanUp(_ context.Context, h *plugin.ExecutedHook, _ plugin.ClientAPI) error {62fmt.Printf("Executing hook cleanup %q\n", h.Hook.GetName())63return nil64}6566func main() {67hplugin.Serve(&hplugin.ServeConfig{68HandshakeConfig: plugin.HandshakeConfig(),69Plugins: map[string]hplugin.Plugin{70"example-plugin": plugin.NewGRPC(&p{}),71},72GRPCServer: hplugin.DefaultGRPCServer,73})74}757677