Use Command operation in place of Task

This commit is contained in:
Chris Roberts 2022-09-19 08:43:35 -07:00
parent 12042fd849
commit 2375cbe8a2
2 changed files with 27 additions and 37 deletions

View File

@ -265,6 +265,10 @@ warning set the environment variable 'VAGRANT_SUPPRESS_GO_EXPERIMENTAL_WARNING'.
return nil, err
}
log.Warn("created basis client",
"basis", bc.basis,
)
// A project is optional (though generally needed) and there are
// two possibilites for how we load the project.
if bc.flagProject != "" {
@ -378,8 +382,7 @@ func (c *baseCommand) Init(opts ...Option) (err error) {
type Tasker interface {
UI() terminal.UI
Task(context.Context, *vagrant_server.Job_RunOp, client.JobModifier) (*vagrant_server.Job_RunResult, error)
//CreateTask() *vagrant_server.Task
Command(context.Context, *vagrant_server.Job_CommandOp, client.JobModifier) (*vagrant_server.Job_CommandResult, error)
}
// Do calls the callback based on the loaded scope. This automatically handles any
@ -402,14 +405,23 @@ func (c *baseCommand) Do(ctx context.Context, f func(context.Context, *client.Cl
func (c *baseCommand) Modifier() client.JobModifier {
return func(j *vagrant_server.Job) {
if c.basis != nil {
j.Basis = c.basis.Ref()
if c.target != nil {
j.Scope = &vagrant_server.Job_Target{
Target: c.target.Ref(),
}
return
}
if c.project != nil {
j.Project = c.project.Ref()
j.Scope = &vagrant_server.Job_Project{
Project: c.project.Ref(),
}
return
}
if c.target != nil {
j.Target = c.target.Ref()
if c.basis != nil {
j.Scope = &vagrant_server.Job_Basis{
Basis: c.basis.Ref(),
}
return
}
}
}

View File

@ -33,9 +33,9 @@ func (c *DynamicCommand) Run(args []string) int {
return 1
}
var r *vagrant_server.Job_RunResult
var r *vagrant_server.Job_CommandResult
err := c.Do(c.Ctx, func(ctx context.Context, cl *client.Client, modifier client.JobModifier) (err error) {
taskArgs := &vagrant_plugin_sdk.Command_Arguments{
cmdArgs := &vagrant_plugin_sdk.Command_Arguments{
Args: c.args,
Flags: []*vagrant_plugin_sdk.Command_Arguments_Flag{},
}
@ -53,47 +53,25 @@ func (c *DynamicCommand) Run(args []string) int {
String_: v.(string),
}
}
taskArgs.Flags = append(taskArgs.Flags, cmdFlag)
cmdArgs.Flags = append(cmdArgs.Flags, cmdFlag)
}
c.Log.Debug("collected argument flags",
"flags", taskArgs.Flags,
"flags", cmdArgs.Flags,
"args", args,
"remaining", c.args,
)
t := &vagrant_server.Task{
Task: c.name,
cOp := &vagrant_server.Job_CommandOp{
Command: c.name,
Component: &vagrant_server.Component{
Type: vagrant_server.Component_COMMAND,
Name: c.name,
},
CliArgs: taskArgs,
CommandName: c.name,
CliArgs: cmdArgs,
}
if c.basis != nil {
t.Scope = &vagrant_server.Task_Basis{
Basis: c.basis.Ref(),
}
}
if c.project != nil {
t.Scope = &vagrant_server.Task_Project{
Project: c.project.Ref(),
}
}
if c.target != nil {
t.Scope = &vagrant_server.Task_Target{
Target: c.target.Ref(),
}
}
r, err = cl.Task(ctx,
&vagrant_server.Job_RunOp{Task: t},
modifier,
)
r, err = cl.Command(ctx, cOp, modifier)
// If nothing failed but we didn't get a Result back, something may
// have gone wrong on the far side so we need to interpret the error.