in cobra/controller/workspace.go [116:320]
func workspaceRun(cmd *cobra.Command, args []string) error {
token := dao.GetOrganizationToken(profile)
client := aid.GetTFEClient(token)
fArg := args[0]
switch fArg {
case "list":
organization := dao.GetOrganization(profile)
options := aid.GetWorkspaceListOptions(cmd)
list, err := workspaceList(client, organization, options)
if err == nil {
aid.PrintWorkspaceList(list)
} else {
return fmt.Errorf("no workspace was found")
}
case "find-by-name":
organization := dao.GetOrganization(profile)
list, err := workspaceList(client, organization, tfe.WorkspaceListOptions{})
if err == nil {
w, err := workspaceFindByName(list, cmd)
if err != nil {
return err
}
fmt.Println(aid.ToJSON(w))
} else {
return fmt.Errorf("no workspace was found")
}
case "create":
organization := dao.GetOrganization(profile)
options := aid.GetWorkspaceCreateOptions(cmd)
workspace, err := workspaceCreate(client, organization, options)
if err == nil && workspace.ID != "" {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("unable to create workspace\n%v", err)
}
case "read":
name, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
organization := dao.GetOrganization(profile)
workspace, err := workspaceRead(client, organization, name)
if err == nil {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("workspace %s not found\n%v", name, err)
}
case "read-by-id":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
workspace, err := workspaceReadByID(client, id)
if err == nil {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("workspace %s not found\n%v", id, err)
}
case "update":
name, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
organization := dao.GetOrganization(profile)
options := aid.GetWorkspaceUpdateOptions(cmd)
workspace, err := workspaceUpdate(client, organization, name, options)
if err == nil && workspace.ID != "" {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("unable to update workspace\n%v", err)
}
case "update-by-id":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetWorkspaceUpdateOptions(cmd)
workspace, err := workspaceUpdateByID(client, id, options)
if err == nil && workspace.ID != "" {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("unable to update workspace\n%v", err)
}
case "delete":
name, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
organization := dao.GetOrganization(profile)
err = workspaceDelete(client, organization, name)
if err == nil {
fmt.Printf("workspace %s deleted successfully\n", name)
} else {
return fmt.Errorf("unable to delete workspace %s\n%v", name, err)
}
case "delete-by-id":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
err = workspaceDeleteByID(client, id)
if err == nil {
fmt.Printf("workspace %s deleted successfully\n", id)
} else {
return fmt.Errorf("unable to delete workspace %s\n%v", id, err)
}
case "remove-vcs-connection":
name, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
organization := dao.GetOrganization(profile)
workspace, err := workspaceRemoveVCSConnection(client, organization, name)
if err == nil {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("unable to remove vcs connection\n%v", err)
}
case "remove-vcs-connection-by-id":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
workspace, err := workspaceRemoveVCSConnectionByID(client, id)
if err == nil {
fmt.Println(aid.ToJSON(workspace))
} else {
return fmt.Errorf("unable to remove vcs connection\n%v", err)
}
case "lock":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
workspace, err := workspaceLock(client, id)
if err != nil {
return fmt.Errorf("unable to lock workspace\n%v", err)
}
if workspace.Locked {
fmt.Println(aid.ToJSON(workspace))
}
case "unlock":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
workspace, err := workspaceUnlock(client, id)
if err != nil {
return err
}
if !workspace.Locked {
fmt.Println(aid.ToJSON(workspace))
}
case "force-unlock":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
workspace, err := workspaceForceUnlock(client, id)
if err != nil {
return err
}
if !workspace.Locked {
fmt.Println(aid.ToJSON(workspace))
}
case "assign-ssh-key":
id, err := cmd.Flags().GetString("id")
if err != nil {
return fmt.Errorf("unable to get flag id\n%v", err)
}
options := aid.GetWorkspaceAssignSSHKeyOptions(cmd)
workspace, err := workspaceAssignSSHKey(client, id, options)
if err != nil {
return err
}
if workspace.ID != "" && workspace.SSHKey.ID != "" {
fmt.Println(aid.ToJSON(workspace))
}
case "unassign-ssh-key":
fmt.Println("unassign-ssh-key")
default:
return fmt.Errorf("unknown argument provided")
}
return nil
}