(deps commandDeps)
| 238 | } |
| 239 | |
| 240 | func newWorkspaceEditCommand(deps commandDeps) *cobra.Command { |
| 241 | var ( |
| 242 | name string |
| 243 | addDirs []string |
| 244 | removeDirs []string |
| 245 | defaultAgent string |
| 246 | sandboxRef string |
| 247 | ) |
| 248 | |
| 249 | cmd := &cobra.Command{ |
| 250 | Use: "edit <name-or-id>", |
| 251 | Short: "Edit a registered workspace", |
| 252 | Example: ` # Rename a workspace |
| 253 | agh workspace edit checkout-api --name checkout |
| 254 | |
| 255 | # Clear the workspace default agent |
| 256 | agh workspace edit checkout-api --default-agent ""`, |
| 257 | Args: exactOneNonBlankArg(), |
| 258 | RunE: func(cmd *cobra.Command, args []string) error { |
| 259 | client, err := clientFromDeps(deps) |
| 260 | if err != nil { |
| 261 | return err |
| 262 | } |
| 263 | |
| 264 | if !workspaceEditFlagsChanged(cmd) { |
| 265 | return errors.New("cli: at least one edit flag is required") |
| 266 | } |
| 267 | |
| 268 | detail, err := client.GetWorkspace(cmd.Context(), args[0]) |
| 269 | if err != nil { |
| 270 | return err |
| 271 | } |
| 272 | |
| 273 | request := WorkspaceUpdateRequest{} |
| 274 | if cmd.Flags().Changed(automationNameKey) { |
| 275 | trimmedName := strings.TrimSpace(name) |
| 276 | if trimmedName == "" { |
| 277 | return errors.New("cli: --name cannot be empty") |
| 278 | } |
| 279 | request.Name = &trimmedName |
| 280 | } |
| 281 | if cmd.Flags().Changed("add-dir") || cmd.Flags().Changed("remove-dir") { |
| 282 | mergedDirs, err := mergeWorkspaceAddDirs( |
| 283 | detail.Workspace.AddDirs, |
| 284 | addDirs, |
| 285 | removeDirs, |
| 286 | ) |
| 287 | if err != nil { |
| 288 | return err |
| 289 | } |
| 290 | request.AddDirs = &mergedDirs |
| 291 | } |
| 292 | if cmd.Flags().Changed("default-agent") { |
| 293 | trimmedDefaultAgent := strings.TrimSpace(defaultAgent) |
| 294 | request.DefaultAgent = &trimmedDefaultAgent |
| 295 | } |
| 296 | if cmd.Flags().Changed("sandbox") { |
| 297 | trimmedSandbox := strings.TrimSpace(sandboxRef) |
no test coverage detected