Skip to content

Commit 4504b96

Browse files
antlai-temporalSushisourceychebotarevTHardy98jmbarzee
authored
Update server to v1.28.0 (#783)
Co-authored-by: Spencer Judge <sjudge@hey.com> Co-authored-by: Yuri <ychebotarev@gmail.com> Co-authored-by: Thomas Hardy <thestaffofmoses@gmail.com> Co-authored-by: Jacob Barzee <jmbarzee@gmail.com> Co-authored-by: Rodrigo Zhou <2068124+rodrigozhou@users.noreply.github.com>
1 parent aaded97 commit 4504b96

13 files changed

Lines changed: 823 additions & 69 deletions

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
# Used by IDE
66
/.idea
77
/.vscode
8+
/.zed
89
*~
9-

go.mod

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ require (
1515
github.com/spf13/pflag v1.0.6
1616
github.com/stretchr/testify v1.10.0
1717
github.com/temporalio/ui-server/v2 v2.36.0
18-
go.temporal.io/api v1.45.0
18+
go.temporal.io/api v1.46.0
1919
go.temporal.io/sdk v1.33.0
20-
go.temporal.io/server v1.27.1
20+
go.temporal.io/server v1.28.0-130.0
2121
google.golang.org/grpc v1.70.0
2222
google.golang.org/protobuf v1.36.5
2323
gopkg.in/yaml.v3 v3.0.1
@@ -138,9 +138,9 @@ require (
138138
go.uber.org/mock v0.5.0 // indirect
139139
go.uber.org/multierr v1.11.0 // indirect
140140
go.uber.org/zap v1.27.0 // indirect
141-
golang.org/x/crypto v0.33.0 // indirect
141+
golang.org/x/crypto v0.35.0 // indirect
142142
golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect
143-
golang.org/x/net v0.35.0 // indirect
143+
golang.org/x/net v0.36.0 // indirect
144144
golang.org/x/oauth2 v0.26.0 // indirect
145145
golang.org/x/sync v0.11.0 // indirect
146146
golang.org/x/sys v0.30.0 // indirect
@@ -150,7 +150,6 @@ require (
150150
google.golang.org/genproto v0.0.0-20250218202821-56aae31c358a // indirect
151151
google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect
152152
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
153-
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
154153
gopkg.in/inf.v0 v0.9.1 // indirect
155154
gopkg.in/validator.v2 v2.0.1 // indirect
156155
modernc.org/libc v1.61.11 // indirect

go.sum

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,12 @@ go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC
371371
go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
372372
go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
373373
go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
374-
go.temporal.io/api v1.45.0 h1:2FZ3eUoOYjavBaQi3/V93MBl99Nq1ifFRjrRwT3MeC8=
375-
go.temporal.io/api v1.45.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM=
374+
go.temporal.io/api v1.46.0 h1:O1efPDB6O2B8uIeCDIa+3VZC7tZMvYsMZYQapSbHvCg=
375+
go.temporal.io/api v1.46.0/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM=
376376
go.temporal.io/sdk v1.33.0 h1:T91UzeRdlHTiMGgpygsItOH9+VSkg+M/mG85PqNjdog=
377377
go.temporal.io/sdk v1.33.0/go.mod h1:WwCmJZLy7zabz3ar5NRAQEygsdP8tgR9sDjISSHuWZw=
378-
go.temporal.io/server v1.27.1 h1:0dyBl25Ua7P4IOXifJg0xUXfnoYTNY1IlUFf1RL4OBo=
379-
go.temporal.io/server v1.27.1/go.mod h1:ddxnsbsXvdZ/oRvjLHaL45NJUGMOPW+3RLkhpq9TOAs=
378+
go.temporal.io/server v1.28.0-130.0 h1:I7juPBQoGfB6kHV7MVC6OnDzl4jRWpUzcsIQPlaXKmk=
379+
go.temporal.io/server v1.28.0-130.0/go.mod h1:WjwWFpSiNEQp/whDLUU7IrUS7UewzJfAk3tQh0GMXZg=
380380
go.temporal.io/version v0.3.0 h1:dMrei9l9NyHt8nG6EB8vAwDLLTwx2SvRyucCSumAiig=
381381
go.temporal.io/version v0.3.0/go.mod h1:UA9S8/1LaKYae6TyD9NaPMJTZb911JcbqghI2CBSP78=
382382
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
@@ -408,8 +408,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
408408
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
409409
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
410410
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
411-
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
412-
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
411+
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
412+
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
413413
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
414414
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
415415
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -449,8 +449,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
449449
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
450450
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
451451
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
452-
golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
453-
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
452+
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
453+
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
454454
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
455455
golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE=
456456
golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
@@ -561,8 +561,6 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
561561
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
562562
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
563563
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
564-
gopkg.in/go-jose/go-jose.v2 v2.6.3 h1:nt80fvSDlhKWQgSWyHyy5CfmlQr+asih51R8PTWNKKs=
565-
gopkg.in/go-jose/go-jose.v2 v2.6.3/go.mod h1:zzZDPkNNw/c9IE7Z9jr11mBZQhKQTMzoEEIoEdZlFBI=
566564
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
567565
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
568566
gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY=

temporalcli/commands.gen.go

Lines changed: 116 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ type SharedWorkflowStartOptions struct {
190190
TaskTimeout Duration
191191
SearchAttribute []string
192192
Memo []string
193+
StaticSummary string
194+
StaticDetails string
193195
}
194196

195197
func (v *SharedWorkflowStartOptions) buildFlags(cctx *CommandContext, f *pflag.FlagSet) {
@@ -206,6 +208,8 @@ func (v *SharedWorkflowStartOptions) buildFlags(cctx *CommandContext, f *pflag.F
206208
f.Var(&v.TaskTimeout, "task-timeout", "Fail a Workflow Task if it lasts longer than `DURATION`. This is the Start-to-close timeout for a Workflow Task.")
207209
f.StringArrayVar(&v.SearchAttribute, "search-attribute", nil, "Search Attribute in `KEY=VALUE` format. Keys must be identifiers, and values must be JSON values. For example: 'YourKey={\"your\": \"value\"}'. Can be passed multiple times.")
208210
f.StringArrayVar(&v.Memo, "memo", nil, "Memo using 'KEY=\"VALUE\"' pairs. Use JSON values.")
211+
f.StringVar(&v.StaticSummary, "static-summary", "", "Static Workflow summary for human consumption in UIs. Uses Temporal Markdown formatting, should be a single line.")
212+
f.StringVar(&v.StaticDetails, "static-details", "", "Static Workflow details for human consumption in UIs. Uses Temporal Markdown formatting, may be multiple lines.")
209213
}
210214

211215
type WorkflowStartOptions struct {
@@ -2855,6 +2859,7 @@ func NewTemporalWorkflowCommand(cctx *CommandContext, parent *TemporalCommand) *
28552859
s.Command.AddCommand(&NewTemporalWorkflowDeleteCommand(cctx, &s).Command)
28562860
s.Command.AddCommand(&NewTemporalWorkflowDescribeCommand(cctx, &s).Command)
28572861
s.Command.AddCommand(&NewTemporalWorkflowExecuteCommand(cctx, &s).Command)
2862+
s.Command.AddCommand(&NewTemporalWorkflowExecuteUpdateWithStartCommand(cctx, &s).Command)
28582863
s.Command.AddCommand(&NewTemporalWorkflowFixHistoryJsonCommand(cctx, &s).Command)
28592864
s.Command.AddCommand(&NewTemporalWorkflowListCommand(cctx, &s).Command)
28602865
s.Command.AddCommand(&NewTemporalWorkflowMetadataCommand(cctx, &s).Command)
@@ -2866,6 +2871,7 @@ func NewTemporalWorkflowCommand(cctx *CommandContext, parent *TemporalCommand) *
28662871
s.Command.AddCommand(&NewTemporalWorkflowSignalWithStartCommand(cctx, &s).Command)
28672872
s.Command.AddCommand(&NewTemporalWorkflowStackCommand(cctx, &s).Command)
28682873
s.Command.AddCommand(&NewTemporalWorkflowStartCommand(cctx, &s).Command)
2874+
s.Command.AddCommand(&NewTemporalWorkflowStartUpdateWithStartCommand(cctx, &s).Command)
28692875
s.Command.AddCommand(&NewTemporalWorkflowTerminateCommand(cctx, &s).Command)
28702876
s.Command.AddCommand(&NewTemporalWorkflowTraceCommand(cctx, &s).Command)
28712877
s.Command.AddCommand(&NewTemporalWorkflowUpdateCommand(cctx, &s).Command)
@@ -3022,6 +3028,58 @@ func NewTemporalWorkflowExecuteCommand(cctx *CommandContext, parent *TemporalWor
30223028
return &s
30233029
}
30243030

3031+
type TemporalWorkflowExecuteUpdateWithStartCommand struct {
3032+
Parent *TemporalWorkflowCommand
3033+
Command cobra.Command
3034+
SharedWorkflowStartOptions
3035+
WorkflowStartOptions
3036+
PayloadInputOptions
3037+
UpdateName string
3038+
UpdateFirstExecutionRunId string
3039+
UpdateId string
3040+
RunId string
3041+
UpdateInput []string
3042+
UpdateInputFile []string
3043+
UpdateInputMeta []string
3044+
UpdateInputBase64 bool
3045+
}
3046+
3047+
func NewTemporalWorkflowExecuteUpdateWithStartCommand(cctx *CommandContext, parent *TemporalWorkflowCommand) *TemporalWorkflowExecuteUpdateWithStartCommand {
3048+
var s TemporalWorkflowExecuteUpdateWithStartCommand
3049+
s.Parent = parent
3050+
s.Command.DisableFlagsInUseLine = true
3051+
s.Command.Use = "execute-update-with-start [flags]"
3052+
s.Command.Short = "Send an Update and wait for it to complete (Experimental)"
3053+
if hasHighlighting {
3054+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to complete. If the Workflow Execution is not running, then a new workflow\nexecution is started and the update is sent.\n\nExperimental.\n\n\x1b[1mtemporal workflow execute-update-with-start \\\n --update-name YourUpdate \\\n --update-input '{\"update-key\": \"update-value\"}' \\\n --workflow-id YourWorkflowId \\\n --type YourWorkflowType \\\n --task-queue YourTaskQueue \\\n --id-conflict-policy Fail \\\n --input '{\"wf-key\": \"wf-value\"}'\x1b[0m"
3055+
} else {
3056+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to complete. If the Workflow Execution is not running, then a new workflow\nexecution is started and the update is sent.\n\nExperimental.\n\n```\ntemporal workflow execute-update-with-start \\\n --update-name YourUpdate \\\n --update-input '{\"update-key\": \"update-value\"}' \\\n --workflow-id YourWorkflowId \\\n --type YourWorkflowType \\\n --task-queue YourTaskQueue \\\n --id-conflict-policy Fail \\\n --input '{\"wf-key\": \"wf-value\"}'\n```"
3057+
}
3058+
s.Command.Args = cobra.NoArgs
3059+
s.Command.Flags().StringVar(&s.UpdateName, "update-name", "", "Update name. Required. Aliased as \"--update-type\".")
3060+
_ = cobra.MarkFlagRequired(s.Command.Flags(), "update-name")
3061+
s.Command.Flags().StringVar(&s.UpdateFirstExecutionRunId, "update-first-execution-run-id", "", "Parent Run ID. The update is sent to the last Workflow Execution in the chain started with this Run ID.")
3062+
s.Command.Flags().StringVar(&s.UpdateId, "update-id", "", "Update ID. If unset, defaults to a UUID.")
3063+
s.Command.Flags().StringVarP(&s.RunId, "run-id", "r", "", "Run ID. If unset, looks for an Update against the currently-running Workflow Execution.")
3064+
s.Command.Flags().StringArrayVar(&s.UpdateInput, "update-input", nil, "Update input value. Use JSON content or set --update-input-meta to override. Can't be combined with --update-input-file. Can be passed multiple times to pass multiple arguments.")
3065+
s.Command.Flags().StringArrayVar(&s.UpdateInputFile, "update-input-file", nil, "A path or paths for input file(s). Use JSON content or set --update-input-meta to override. Can't be combined with --update-input. Can be passed multiple times to pass multiple arguments.")
3066+
s.Command.Flags().StringArrayVar(&s.UpdateInputMeta, "update-input-meta", nil, "Input update payload metadata as a `KEY=VALUE` pair. When the KEY is \"encoding\", this overrides the default (\"json/plain\"). Can be passed multiple times.")
3067+
s.Command.Flags().BoolVar(&s.UpdateInputBase64, "update-input-base64", false, "Assume update inputs are base64-encoded and attempt to decode them.")
3068+
s.SharedWorkflowStartOptions.buildFlags(cctx, s.Command.Flags())
3069+
s.WorkflowStartOptions.buildFlags(cctx, s.Command.Flags())
3070+
s.PayloadInputOptions.buildFlags(cctx, s.Command.Flags())
3071+
s.Command.Flags().SetNormalizeFunc(aliasNormalizer(map[string]string{
3072+
"name": "type",
3073+
"update-type": "update-name",
3074+
}))
3075+
s.Command.Run = func(c *cobra.Command, args []string) {
3076+
if err := s.run(cctx, args); err != nil {
3077+
cctx.Options.Fail(err)
3078+
}
3079+
}
3080+
return &s
3081+
}
3082+
30253083
type TemporalWorkflowFixHistoryJsonCommand struct {
30263084
Parent *TemporalWorkflowCommand
30273085
Command cobra.Command
@@ -3403,6 +3461,62 @@ func NewTemporalWorkflowStartCommand(cctx *CommandContext, parent *TemporalWorkf
34033461
return &s
34043462
}
34053463

3464+
type TemporalWorkflowStartUpdateWithStartCommand struct {
3465+
Parent *TemporalWorkflowCommand
3466+
Command cobra.Command
3467+
SharedWorkflowStartOptions
3468+
WorkflowStartOptions
3469+
PayloadInputOptions
3470+
UpdateName string
3471+
UpdateFirstExecutionRunId string
3472+
UpdateWaitForStage StringEnum
3473+
UpdateId string
3474+
RunId string
3475+
UpdateInput []string
3476+
UpdateInputFile []string
3477+
UpdateInputMeta []string
3478+
UpdateInputBase64 bool
3479+
}
3480+
3481+
func NewTemporalWorkflowStartUpdateWithStartCommand(cctx *CommandContext, parent *TemporalWorkflowCommand) *TemporalWorkflowStartUpdateWithStartCommand {
3482+
var s TemporalWorkflowStartUpdateWithStartCommand
3483+
s.Parent = parent
3484+
s.Command.DisableFlagsInUseLine = true
3485+
s.Command.Use = "start-update-with-start [flags]"
3486+
s.Command.Short = "Send an Update and wait for it to be accepted or rejected (Experimental)"
3487+
if hasHighlighting {
3488+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. If the Workflow Execution is not running, \nthen a new workflow execution is started and the update is sent.\n\nExperimental.\n\n\x1b[1mtemporal workflow start-update-with-start \\\n --update-name YourUpdate \\\n --update-input '{\"update-key\": \"update-value\"}' \\\n --update-wait-for-stage accepted \\\n --workflow-id YourWorkflowId \\\n --type YourWorkflowType \\\n --task-queue YourTaskQueue \\\n --id-conflict-policy Fail \\\n --input '{\"wf-key\": \"wf-value\"}'\x1b[0m"
3489+
} else {
3490+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. If the Workflow Execution is not running, \nthen a new workflow execution is started and the update is sent.\n\nExperimental.\n\n```\ntemporal workflow start-update-with-start \\\n --update-name YourUpdate \\\n --update-input '{\"update-key\": \"update-value\"}' \\\n --update-wait-for-stage accepted \\\n --workflow-id YourWorkflowId \\\n --type YourWorkflowType \\\n --task-queue YourTaskQueue \\\n --id-conflict-policy Fail \\\n --input '{\"wf-key\": \"wf-value\"}'\n```"
3491+
}
3492+
s.Command.Args = cobra.NoArgs
3493+
s.Command.Flags().StringVar(&s.UpdateName, "update-name", "", "Update name. Required. Aliased as \"--update-type\".")
3494+
_ = cobra.MarkFlagRequired(s.Command.Flags(), "update-name")
3495+
s.Command.Flags().StringVar(&s.UpdateFirstExecutionRunId, "update-first-execution-run-id", "", "Parent Run ID. The update is sent to the last Workflow Execution in the chain started with this Run ID.")
3496+
s.UpdateWaitForStage = NewStringEnum([]string{"accepted"}, "")
3497+
s.Command.Flags().Var(&s.UpdateWaitForStage, "update-wait-for-stage", "Update stage to wait for. The only option is `accepted`, but this option is required. This is to allow a future version of the CLI to choose a default value. Accepted values: accepted. Required.")
3498+
_ = cobra.MarkFlagRequired(s.Command.Flags(), "update-wait-for-stage")
3499+
s.Command.Flags().StringVar(&s.UpdateId, "update-id", "", "Update ID. If unset, defaults to a UUID.")
3500+
s.Command.Flags().StringVarP(&s.RunId, "run-id", "r", "", "Run ID. If unset, looks for an Update against the currently-running Workflow Execution.")
3501+
s.Command.Flags().StringArrayVar(&s.UpdateInput, "update-input", nil, "Update input value. Use JSON content or set --update-input-meta to override. Can't be combined with --update-input-file. Can be passed multiple times to pass multiple arguments.")
3502+
s.Command.Flags().StringArrayVar(&s.UpdateInputFile, "update-input-file", nil, "A path or paths for input file(s). Use JSON content or set --update-input-meta to override. Can't be combined with --update-input. Can be passed multiple times to pass multiple arguments.")
3503+
s.Command.Flags().StringArrayVar(&s.UpdateInputMeta, "update-input-meta", nil, "Input update payload metadata as a `KEY=VALUE` pair. When the KEY is \"encoding\", this overrides the default (\"json/plain\"). Can be passed multiple times.")
3504+
s.Command.Flags().BoolVar(&s.UpdateInputBase64, "update-input-base64", false, "Assume update inputs are base64-encoded and attempt to decode them.")
3505+
s.SharedWorkflowStartOptions.buildFlags(cctx, s.Command.Flags())
3506+
s.WorkflowStartOptions.buildFlags(cctx, s.Command.Flags())
3507+
s.PayloadInputOptions.buildFlags(cctx, s.Command.Flags())
3508+
s.Command.Flags().SetNormalizeFunc(aliasNormalizer(map[string]string{
3509+
"name": "type",
3510+
"update-type": "update-name",
3511+
}))
3512+
s.Command.Run = func(c *cobra.Command, args []string) {
3513+
if err := s.run(cctx, args); err != nil {
3514+
cctx.Options.Fail(err)
3515+
}
3516+
}
3517+
return &s
3518+
}
3519+
34063520
type TemporalWorkflowTerminateCommand struct {
34073521
Parent *TemporalWorkflowCommand
34083522
Command cobra.Command
@@ -3595,9 +3709,9 @@ func NewTemporalWorkflowUpdateStartCommand(cctx *CommandContext, parent *Tempora
35953709
s.Command.Use = "start [flags]"
35963710
s.Command.Short = "Send an Update and wait for it to be accepted or rejected (Experimental)"
35973711
if hasHighlighting {
3598-
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. You can subsequently wait for the update\nto complete by using \x1b[1mtemporal workflow update execute\x1b[0m.\n\nExperimental.\n\n\x1b[1mtemporal workflow update start \\\n --workflow-id YourWorkflowId \\\n --name YourUpdate \\\n --input '{\"some-key\": \"some-value\"}'\x1b[0m"
3712+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. You can subsequently wait for the update\nto complete by using \x1b[1mtemporal workflow update execute\x1b[0m.\n\nExperimental.\n\n\x1b[1mtemporal workflow update start \\\n --workflow-id YourWorkflowId \\\n --name YourUpdate \\\n --input '{\"some-key\": \"some-value\"}'\n --wait-for-stage accepted\x1b[0m"
35993713
} else {
3600-
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. You can subsequently wait for the update\nto complete by using `temporal workflow update execute`.\n\nExperimental.\n\n```\ntemporal workflow update start \\\n --workflow-id YourWorkflowId \\\n --name YourUpdate \\\n --input '{\"some-key\": \"some-value\"}'\n```"
3714+
s.Command.Long = "Send a message to a Workflow Execution to invoke an Update handler, and wait for\nthe update to be accepted or rejected. You can subsequently wait for the update\nto complete by using `temporal workflow update execute`.\n\nExperimental.\n\n```\ntemporal workflow update start \\\n --workflow-id YourWorkflowId \\\n --name YourUpdate \\\n --input '{\"some-key\": \"some-value\"}'\n --wait-for-stage accepted\n```"
36013715
}
36023716
s.Command.Args = cobra.NoArgs
36033717
s.WaitForStage = NewStringEnum([]string{"accepted"}, "")

temporalcli/commands.operator_search_attribute.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func searchAttributeTypeStringToEnum(search string) (enums.IndexedValueType, err
6060
return enums.IndexedValueType(v), nil
6161
}
6262
}
63-
return enums.INDEXED_VALUE_TYPE_UNSPECIFIED, fmt.Errorf("unsupported search attribute type: %v", search)
63+
return enums.INDEXED_VALUE_TYPE_UNSPECIFIED, fmt.Errorf("unsupported search attribute type: %q", search)
6464
}
6565

6666
func (c *TemporalOperatorSearchAttributeRemoveCommand) run(cctx *CommandContext, args []string) error {

0 commit comments

Comments
 (0)