github.com/leg100/ots@v0.0.7-0.20210919080622-034055ced4bd/cmd/ots/workspace_unlock.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/spf13/cobra"
     7  )
     8  
     9  func WorkspaceUnlockCommand(config ClientConfig) *cobra.Command {
    10  	var organization string
    11  	var workspace string
    12  
    13  	cmd := &cobra.Command{
    14  		Use:   "unlock [name]",
    15  		Short: "Unlock a workspace",
    16  		Args:  cobra.ExactArgs(1),
    17  		RunE: func(cmd *cobra.Command, args []string) error {
    18  			workspace = args[0]
    19  
    20  			client, err := config.NewClient()
    21  			if err != nil {
    22  				return err
    23  			}
    24  
    25  			ws, err := client.Workspaces().Read(cmd.Context(), organization, workspace)
    26  			if err != nil {
    27  				return err
    28  			}
    29  
    30  			ws, err = client.Workspaces().Unlock(cmd.Context(), ws.ID)
    31  			if err != nil {
    32  				return err
    33  			}
    34  
    35  			fmt.Printf("Successfully locked workspace %s\n", ws.Name)
    36  
    37  			return nil
    38  		},
    39  	}
    40  
    41  	cmd.Flags().StringVar(&organization, "organization", "", "Organization workspace belongs to")
    42  	cmd.MarkFlagRequired("organization")
    43  
    44  	return cmd
    45  }