MCPcopy Create free account
hub / github.com/compozy/agh / newWorkspaceEditCommand

Function newWorkspaceEditCommand

internal/cli/workspace.go:240–319  ·  view source on GitHub ↗
(deps commandDeps)

Source from the content-addressed store, hash-verified

238}
239
240func 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)

Callers 1

newWorkspaceCommandFunction · 0.85

Calls 8

exactOneNonBlankArgFunction · 0.85
clientFromDepsFunction · 0.85
mergeWorkspaceAddDirsFunction · 0.85
writeCommandOutputFunction · 0.85
workspaceRecordBundleFunction · 0.85
GetWorkspaceMethod · 0.65
UpdateWorkspaceMethod · 0.65

Tested by

no test coverage detected