in cobra/controller/run.go [85:291]
func runRun(cmd *cobra.Command, args []string) error {
token := dao.GetTeamToken(profile)
client := aid.GetTFEClient(token)
fArg := args[0]
switch fArg {
case "list":
workspaceID, err := cmd.Flags().GetString("workspace-id")
if err != nil {
return fmt.Errorf("unable to get flag workspace-id\n%v", err)
}
list, err := runList(client, workspaceID, tfe.RunListOptions{})
if err == nil {
aid.PrintRunList(list)
} else {
return fmt.Errorf("no run was found")
}
case "create":
options := aid.GetRunCreateOptions(cmd)
workspaceID, err := cmd.Flags().GetString("workspace-id")
if err != nil {
return fmt.Errorf("unable to get flag workspace-id\n%v", err)
}
if workspaceID != "" {
workspace, err := workspaceReadByID(client, workspaceID)
if err != nil {
return fmt.Errorf("unable to find workspace %s\n%v", workspaceID, err)
}
options.Workspace = workspace
}
cvID, err := cmd.Flags().GetString("configuration-version-id")
if err != nil {
return fmt.Errorf("unable to get flag configuration-version-id\n%v", err)
}
if cvID != "" {
cv, err := configurationVersionRead(client, cvID)
if err != nil {
return fmt.Errorf("unable to find configuration version %s\n%v", cvID, err)
}
if cv.ID != "" {
options.ConfigurationVersion = cv
}
}
run, err := runCreate(client, options)
if err == nil && run.ID != "" {
fmt.Println(aid.ToJSON(run))
} else {
return fmt.Errorf("unable to create run\n%v", err)
}
case "read":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
run, err := runRead(client, id)
if err == nil {
fmt.Println(aid.ToJSON(run))
} else {
return fmt.Errorf("run %s not found\n%v", id, err)
}
case "read-with-options":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetRunReadOptions(cmd)
run, err := runReadWithOptions(client, id, &options)
if err == nil {
fmt.Println(aid.ToJSON(run))
} else {
return fmt.Errorf("run %s not found\n%v", id, err)
}
case "apply":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetRunApplyOptions(cmd)
err = runApply(client, id, options)
if err != nil {
return fmt.Errorf("unable to apply run\n%v", err)
}
fmt.Println("run applied successfully")
case "cancel":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetRunCancelOptions(cmd)
err = runCancel(client, id, options)
if err != nil {
return fmt.Errorf("unable to cancel run\n%v", err)
}
fmt.Println("run cancelled successfully")
case "cancel-all":
workspaceID, err := cmd.Flags().GetString("workspace-id")
if err != nil {
return fmt.Errorf("unable to get flag workspace-id\n%v", err)
}
list, err := runList(client, workspaceID, tfe.RunListOptions{})
if err == nil {
for _, r := range list.Items {
if r.Actions.IsCancelable {
fmt.Printf("attempting to cancel run (%s)\n", r.ID)
options := aid.GetRunCancelOptions(cmd)
err := runCancel(client, r.ID, options)
if err != nil {
return fmt.Errorf("unable to cancel run (%s)", r.ID)
}
fmt.Printf("run (%s) cancelled successfully\n", r.ID)
}
}
} else {
return fmt.Errorf("no run was found")
}
case "force-cancel":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetRunForceCancelOptions(cmd)
err = runForceCancel(client, id, options)
if err != nil {
return fmt.Errorf("unable to force ancel run\n%v", err)
}
fmt.Println("run cancelled successfully")
case "force-cancel-all":
workspaceID, err := cmd.Flags().GetString("workspace-id")
if err != nil {
return fmt.Errorf("unable to get flag workspace-id\n%v", err)
}
list, err := runList(client, workspaceID, tfe.RunListOptions{})
if err == nil {
for _, r := range list.Items {
if r.Actions.IsForceCancelable {
fmt.Printf("attempting to force-cancel run (%s)\n", r.ID)
options := aid.GetRunForceCancelOptions(cmd)
err := runForceCancel(client, r.ID, options)
if err != nil {
return fmt.Errorf("unable to force cancel run (%s)", r.ID)
}
fmt.Printf("run (%s) force-cancelled successfully\n", r.ID)
}
}
} else {
return fmt.Errorf("no run was found")
}
case "discard":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetRunDiscardOptions(cmd)
err = runDiscard(client, id, options)
if err != nil {
return fmt.Errorf("unable to discard run\n%v", err)
}
case "discard-all":
workspaceID, err := cmd.Flags().GetString("workspace-id")
if err != nil {
return fmt.Errorf("unable to get flag workspace-id\n%v", err)
}
list, err := runList(client, workspaceID, tfe.RunListOptions{})
if err == nil {
for _, r := range list.Items {
if r.Actions.IsDiscardable {
fmt.Printf("attempting to discard run (%s)\n", r.ID)
options := aid.GetRunDiscardOptions(cmd)
err := runDiscard(client, r.ID, options)
if err != nil {
return fmt.Errorf("unable to discard run (%s)", r.ID)
}
fmt.Printf("run (%s) discarded successfully\n", r.ID)
}
}
} else {
return fmt.Errorf("no run was found")
}
}
return nil
}