vaguerent/internal/core/mappers.go
2022-04-25 12:26:32 -05:00

36 lines
877 B
Go

package core
import (
"strings"
"github.com/hashicorp/vagrant-plugin-sdk/component"
"github.com/hashicorp/vagrant-plugin-sdk/internal-shared/protomappers"
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
)
var Mappers = []interface{}{
JobCommandProto,
}
func JobCommandProto(c *component.CommandInfo) []*vagrant_plugin_sdk.Command_CommandInfo {
return jobCommandProto(c, []string{})
}
func jobCommandProto(c *component.CommandInfo, names []string) []*vagrant_plugin_sdk.Command_CommandInfo {
names = append(names, c.Name)
flgs, _ := protomappers.FlagsProto(c.Flags)
cmds := []*vagrant_plugin_sdk.Command_CommandInfo{
{
Name: strings.Join(names, " "),
Synopsis: c.Synopsis,
Help: c.Help,
Flags: flgs,
},
}
for _, scmd := range c.Subcommands {
cmds = append(cmds, jobCommandProto(scmd, names)...)
}
return cmds
}