Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 6 additions & 6 deletions cmd/cone/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -408,16 +408,16 @@ func awsCredentialsRun(cmd *cobra.Command, args []string) error {
t := taskResp.TaskView.Task

// Check the current step — if it needs human action, stop polling.
if t.PolicyInstance != nil && t.PolicyInstance.PolicyStepInstance != nil {
step := t.PolicyInstance.PolicyStepInstance
if t.Policy != nil && t.Policy.Current != nil {
step := t.Policy.Current
switch {
case step.ApprovalInstance != nil:
case step.Approval != nil:
fmt.Fprintf(os.Stderr, "\n")
fmt.Fprintf(os.Stderr, "Request submitted for %q but requires approval.\n", profileName)
fmt.Fprintf(os.Stderr, "Check status: cone task get %s\n", taskNum)
fmt.Fprintf(os.Stderr, "Once approved, retry the command.\n")
return fmt.Errorf("awaiting approval")
case step.FormInstance != nil:
case step.Form != nil:
fmt.Fprintf(os.Stderr, "\n")
return fmt.Errorf("request submitted for %q but requires form input. Complete it with:\n cone get --app-id %s --entitlement-id %s", profileName, appID, entitlementID)
}
Expand All @@ -427,8 +427,8 @@ func awsCredentialsRun(cmd *cobra.Command, args []string) error {
if t.State == nil || *t.State != shared.TaskStateTaskStateClosed {
continue
}
if t.TaskType.TaskTypeGrant != nil && t.TaskType.TaskTypeGrant.Outcome != nil {
outcome = string(*t.TaskType.TaskTypeGrant.Outcome)
if t.Type != nil && t.Type.Grant != nil && t.Type.Grant.Outcome != nil {
outcome = string(*t.Type.Grant.Outcome)
}
break
}
Expand Down
24 changes: 12 additions & 12 deletions cmd/cone/form_fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ func collectFieldValue(ctx context.Context, field shared.FormField, displayName,

// Collect based on field type
switch {
case field.FormStringField != nil:
return collectStringField(ctx, field.FormStringField, displayName, description)
case field.StringField != nil:
return collectStringField(ctx, field.StringField, displayName, description)
case field.BoolField != nil:
return collectBoolField(ctx, field.BoolField, displayName, description)
case field.Int64Field != nil:
Expand Down Expand Up @@ -246,8 +246,8 @@ func collectStringSliceField(ctx context.Context, field *shared.StringSliceField
// getFieldDefaultValue extracts the default value from a field based on its type.
func getFieldDefaultValue(field shared.FormField) any {
switch {
case field.FormStringField != nil && field.FormStringField.DefaultValue != nil:
return *field.FormStringField.DefaultValue
case field.StringField != nil && field.StringField.DefaultValue != nil:
return *field.StringField.DefaultValue
case field.BoolField != nil && field.BoolField.DefaultValue != nil:
return *field.BoolField.DefaultValue
case field.Int64Field != nil && field.Int64Field.DefaultValue != nil:
Expand Down Expand Up @@ -287,7 +287,7 @@ type StringFieldValidator struct {
func (v StringFieldValidator) IsValid(txt string) (string, bool) {
if txt == "" {
// Check if field is required
if v.field.StringRules != nil {
if v.field.Rules != nil {
// StringRules might have required field, but we'll be lenient here
// and allow empty if no explicit requirement
return txt, true
Expand All @@ -296,8 +296,8 @@ func (v StringFieldValidator) IsValid(txt string) (string, bool) {
}

// Apply validation rules if present
if v.field.StringRules != nil {
rules := v.field.StringRules
if v.field.Rules != nil {
rules := v.field.Rules
if rules.MinLen != nil {
minLen, err := strconv.Atoi(*rules.MinLen)
if err == nil && len(txt) < minLen {
Expand Down Expand Up @@ -353,8 +353,8 @@ func (v Int64FieldValidator) IsValid(txt string) (int64, bool) {
}

// Apply validation rules if present
if v.field.Int64Rules != nil {
rules := v.field.Int64Rules
if v.field.Rules != nil {
rules := v.field.Rules
if rules.Const != nil && value != *rules.Const {
return 0, false
}
Expand Down Expand Up @@ -396,8 +396,8 @@ func (v Int64FieldValidator) Prompt(isFirstRun bool) {
// isFieldRequired checks if a field is required based on its validation rules.
func isFieldRequired(field shared.FormField) bool {
switch {
case field.FormStringField != nil:
rules := field.FormStringField.StringRules
case field.StringField != nil:
rules := field.StringField.Rules
if rules == nil {
return false
}
Expand All @@ -416,7 +416,7 @@ func isFieldRequired(field shared.FormField) bool {
case field.Int64Field != nil:
// Int64 fields don't have an IgnoreEmpty concept in the same way
// Consider required if there are validation rules but no default
return field.Int64Field.Int64Rules != nil && field.Int64Field.DefaultValue == nil
return field.Int64Field.Rules != nil && field.Int64Field.DefaultValue == nil
case field.BoolField != nil:
// Bool fields typically have a default (false), so rarely required
return false
Expand Down
2 changes: 1 addition & 1 deletion cmd/cone/generate_alias.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ func processEntitlement(ctx context.Context, c client.C1Client, e *client.Entitl

if !flags.DryRun {
req := &shared.UpdateAppEntitlementRequest{
AppEntitlement: &shared.AppEntitlementInput{
Entitlement: &shared.AppEntitlementInput{
Alias: &alias,
},
UpdateMask: stringPtr("alias"),
Expand Down
14 changes: 7 additions & 7 deletions cmd/cone/get_drop_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -271,12 +271,12 @@ func runGet(cmd *cobra.Command, args []string) error {
task := accessRequest.TaskView.Task

// Check if the task has form fields
hasFormFields := len(formFields(task.RequestSchemaForm)) > 0
hasFormFields := len(formFields(task.Form)) > 0

if hasFormFields {
// Collect form fields if not already provided
if len(requestData) == 0 {
collectedData, err := collectFormFields(ctx, v, task.RequestSchemaForm)
collectedData, err := collectFormFields(ctx, v, task.Form)
if err != nil {
return nil, fmt.Errorf("error collecting form fields: %w", err)
}
Expand All @@ -290,7 +290,7 @@ func runGet(cmd *cobra.Command, args []string) error {
}
} else {
// Validate that provided form data matches the form structure
if err := validateFormData(task.RequestSchemaForm, requestData); err != nil {
if err := validateFormData(task.Form, requestData); err != nil {
pterm.Warning.Printf("Form data validation warning: %v\n", err)
}
}
Expand Down Expand Up @@ -573,17 +573,17 @@ func handleWaitBehavior(ctx context.Context, c client.C1Client, task *shared.Tas
break
}
}
if taskItem.TaskType.TaskTypeGrant != nil {
taskOutcome := taskItem.TaskType.TaskTypeGrant.Outcome
if taskItem.Type != nil && taskItem.Type.Grant != nil {
taskOutcome := taskItem.Type.Grant.Outcome
if *taskOutcome == shared.TaskTypeGrantOutcomeGrantOutcomeGranted {
spinner.Success("Entitlement granted successfully.")
} else {
spinner.Fail(fmt.Sprintf("Failed to grant entitlement %s", string(*taskOutcome)))
return fmt.Errorf("failed to grant entitlement %s", string(*taskOutcome))
}
}
if taskItem.TaskType.TaskTypeRevoke != nil {
taskOutcome := taskItem.TaskType.TaskTypeRevoke.Outcome
if taskItem.Type != nil && taskItem.Type.Revoke != nil {
taskOutcome := taskItem.Type.Revoke.Outcome
if *taskOutcome == shared.TaskTypeRevokeOutcomeRevokeOutcomeRevoked {
spinner.Success("Entitlement revoked succesfully.")
} else {
Expand Down
4 changes: 2 additions & 2 deletions cmd/cone/task_approve_deny.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ func runApproveDeny(
return err
}

if taskResp.TaskView.Task.PolicyInstance.PolicyStepInstance == nil {
if taskResp.TaskView.Task.Policy == nil || taskResp.TaskView.Task.Policy.Current == nil {
return errors.New("task does not have a current policy step id and cannot be approved or denied")
}

task, err := run(c, ctx, taskId, comment, client.StringFromPtr(taskResp.TaskView.Task.PolicyInstance.PolicyStepInstance.ID))
task, err := run(c, ctx, taskId, comment, client.StringFromPtr(taskResp.TaskView.Task.Policy.Current.ID))
if err != nil {
return err
}
Expand Down
6 changes: 3 additions & 3 deletions cmd/cone/task_search.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,11 @@ func searchTasksRun(cmd *cobra.Command, args []string) error {
var taskType *shared.TaskTypeInput
switch strings.ToLower(v.GetString(taskTypeFlag)) {
case "grant":
taskType = &shared.TaskTypeInput{TaskTypeGrant: &shared.TaskTypeGrantInput{}}
taskType = &shared.TaskTypeInput{Grant: &shared.TaskTypeGrantInput{}}
case "revoke":
taskType = &shared.TaskTypeInput{TaskTypeRevoke: &shared.TaskTypeRevokeInput{}}
taskType = &shared.TaskTypeInput{Revoke: &shared.TaskTypeRevokeInput{}}
case "certify":
taskType = &shared.TaskTypeInput{TaskTypeCertify: &shared.TaskTypeCertifyInput{}}
taskType = &shared.TaskTypeInput{Certify: &shared.TaskTypeCertifyInput{}}
}

if taskType != nil {
Expand Down
16 changes: 8 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ go 1.26

require (
go.uber.org/zap v1.27.0
golang.org/x/net v0.47.0
golang.org/x/net v0.55.0
google.golang.org/grpc v1.73.0
google.golang.org/protobuf v1.36.6
)

require (
filippo.io/age v1.3.1
github.com/conductorone/baton-sdk v0.3.17
github.com/conductorone/conductorone-sdk-go v1.28.2
github.com/conductorone/conductorone-sdk-go v1.29.0
github.com/pterm/pterm v0.12.81
github.com/toqueteos/webbrowser v1.2.0
github.com/xhit/go-str2duration/v2 v2.1.0
golang.org/x/sync v0.18.0
golang.org/x/sync v0.20.0
)

require (
Expand All @@ -27,7 +27,7 @@ require (
filippo.io/hpke v0.4.0 // indirect
github.com/containerd/console v1.0.5 // indirect
github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect
github.com/go-jose/go-jose/v4 v4.1.1 // indirect
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
github.com/go-viper/mapstructure/v2 v2.3.0 // indirect
github.com/gookit/color v1.5.4 // indirect
github.com/lithammer/fuzzysearch v1.1.8 // indirect
Expand All @@ -38,8 +38,8 @@ require (
github.com/spyzhov/ajson v0.9.6 // indirect
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.45.0 // indirect
golang.org/x/term v0.37.0 // indirect
golang.org/x/crypto v0.52.0 // indirect
golang.org/x/term v0.43.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
)

Expand All @@ -57,8 +57,8 @@ require (
github.com/subosito/gotenv v1.6.0 // indirect
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b
golang.org/x/oauth2 v0.30.0
golang.org/x/sys v0.38.0 // indirect
golang.org/x/text v0.31.0 // indirect
golang.org/x/sys v0.45.0 // indirect
golang.org/x/text v0.37.0 // indirect
gopkg.in/square/go-jose.v2 v2.6.0
gopkg.in/yaml.v3 v3.0.1
)
32 changes: 16 additions & 16 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/conductorone/baton-sdk v0.3.17 h1:aJNr4T2xr7rDa4P2nwKEHjJngI5JcNgfBZZ9aeeliHc=
github.com/conductorone/baton-sdk v0.3.17/go.mod h1:lWZHgu025Rsgs5jvBrhilGti0zWF2+YfaFY/bWOS/g0=
github.com/conductorone/conductorone-sdk-go v1.28.2 h1:7ZTZZuj4rbjOEl1fFj4CTd5dGpARxE3NvgzK/DZo0iE=
github.com/conductorone/conductorone-sdk-go v1.28.2/go.mod h1:XfnxsPIsLn6s01PD46kU9tEUUljTRik7aviJIwB7D0k=
github.com/conductorone/conductorone-sdk-go v1.29.0 h1:GaIrU29Sx8CprDzAwbZ1Z+ckyp6VQ0J29BxnNwz/8+I=
github.com/conductorone/conductorone-sdk-go v1.29.0/go.mod h1:iqBl+c2rcJkLTcvACVFAmq9f26175oBIQTR8pAjQVi4=
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc=
github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk=
Expand All @@ -52,8 +52,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI=
github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
Expand Down Expand Up @@ -196,8 +196,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
Expand All @@ -220,8 +220,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
Expand All @@ -232,8 +232,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand All @@ -250,22 +250,22 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
Expand Down
Loading