func workspaceRun()

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
}