Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0fe358d

Browse files
chore(cli): re-order CLI create command
Relates tocoder/internal#893Instead of `coder task create <template> --input <input>`, it is now`coder task create <input> --template <template>`.If there is only one AI task template on the deployment, the `--template`parameter can be omitted.
1 parent3470632 commit0fe358d

File tree

2 files changed

+55
-25
lines changed

2 files changed

+55
-25
lines changed

‎cli/exp_taskcreate.go‎renamed to ‎cli/exp_task_create.go‎

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package cli
22

33
import (
44
"fmt"
5-
"strings"
65

76
"github.com/google/uuid"
87
"golang.org/x/xerrors"
@@ -24,24 +23,25 @@ func (r *RootCmd) taskCreate() *serpent.Command {
2423
)
2524

2625
cmd:=&serpent.Command{
27-
Use:"create [template]",
26+
Use:"create [input]",
2827
Short:"Create an experimental task",
2928
Middleware:serpent.Chain(
3029
serpent.RequireRangeArgs(0,1),
3130
r.InitClient(client),
3231
),
3332
Options: serpent.OptionSet{
3433
{
35-
Flag:"input",
36-
Env:"CODER_TASK_INPUT",
37-
Value:serpent.StringOf(&taskInput),
38-
Required:true,
34+
Flag:"input",
35+
Env:"CODER_TASK_INPUT",
36+
Value:serpent.StringOf(&taskInput),
3937
},
4038
{
39+
Flag:"template",
4140
Env:"CODER_TASK_TEMPLATE_NAME",
4241
Value:serpent.StringOf(&templateName),
4342
},
4443
{
44+
Flag:"template-version",
4545
Env:"CODER_TASK_TEMPLATE_VERSION",
4646
Value:serpent.StringOf(&templateVersionName),
4747
},
@@ -67,20 +67,21 @@ func (r *RootCmd) taskCreate() *serpent.Command {
6767
}
6868

6969
iflen(inv.Args)>0 {
70-
templateName,templateVersionName,_=strings.Cut(inv.Args[0],"@")
70+
taskInput=inv.Args[0]
7171
}
7272

7373
iftemplateName=="" {
74-
returnxerrors.Errorf("template name not provided")
75-
}
76-
77-
iftemplateVersionName!="" {
78-
templateVersion,err:=client.TemplateVersionByOrganizationAndName(ctx,organization.ID,templateName,templateVersionName)
74+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{SearchQuery:"has-ai-task:true",OrganizationID:organization.ID})
7975
iferr!=nil {
80-
returnxerrors.Errorf("get template version: %w",err)
76+
returnxerrors.Errorf("list templates: %w",err)
8177
}
8278

83-
templateVersionID=templateVersion.ID
79+
iflen(templates)!=0 {
80+
returnxerrors.Errorf("template name not provided")
81+
}
82+
83+
templateName=templates[0].Name
84+
templateVersionID=templates[0].ActiveVersionID
8485
}else {
8586
template,err:=client.TemplateByName(ctx,organization.ID,templateName)
8687
iferr!=nil {
@@ -90,6 +91,15 @@ func (r *RootCmd) taskCreate() *serpent.Command {
9091
templateVersionID=template.ActiveVersionID
9192
}
9293

94+
iftemplateVersionName!="" {
95+
templateVersion,err:=client.TemplateVersionByOrganizationAndName(ctx,organization.ID,templateName,templateVersionName)
96+
iferr!=nil {
97+
returnxerrors.Errorf("get template version: %w",err)
98+
}
99+
100+
templateVersionID=templateVersion.ID
101+
}
102+
93103
ifpresetName!=PresetNone {
94104
templatePresets,err:=client.TemplateVersionPresets(ctx,templateVersionID)
95105
iferr!=nil {

‎cli/exp_taskcreate_test.go‎renamed to ‎cli/exp_task_create_test.go‎

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ func TestTaskCreate(t *testing.T) {
6060
Name:presetName,
6161
},
6262
})
63+
case"/api/v2/templates":
64+
httpapi.Write(ctx,w,http.StatusOK, []codersdk.Template{
65+
{
66+
ID:templateID,
67+
Name:templateName,
68+
ActiveVersionID:templateVersionID,
69+
},
70+
})
6371
case"/api/experimental/tasks/me":
6472
varreq codersdk.CreateTaskRequest
6573
if!httpapi.Read(ctx,w,r,&req) {
@@ -93,22 +101,29 @@ func TestTaskCreate(t *testing.T) {
93101
handlerfunc(t*testing.T,ctx context.Context) http.HandlerFunc
94102
}{
95103
{
96-
args: []string{"my-template@my-template-version","--input","my custom prompt","--org",organizationID.String()},
104+
args: []string{"my custom prompt"},
105+
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
106+
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
107+
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","my-template-version","","my custom prompt")
108+
},
109+
},
110+
{
111+
args: []string{"my custom prompt","--template","my-template","--template-version","my-template-version","--org",organizationID.String()},
97112
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
98113
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
99114
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","my-template-version","","my custom prompt")
100115
},
101116
},
102117
{
103-
args: []string{"my-template","--input","my custom prompt","--org",organizationID.String()},
118+
args: []string{"my custom prompt","--template","my-template","--org",organizationID.String()},
104119
env: []string{"CODER_TASK_TEMPLATE_VERSION=my-template-version"},
105120
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
106121
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
107122
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","my-template-version","","my custom prompt")
108123
},
109124
},
110125
{
111-
args: []string{"--input","my custom prompt","--org",organizationID.String()},
126+
args: []string{"my custom prompt","--org",organizationID.String()},
112127
env: []string{"CODER_TASK_TEMPLATE_NAME=my-template","CODER_TASK_TEMPLATE_VERSION=my-template-version"},
113128
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
114129
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
@@ -123,36 +138,36 @@ func TestTaskCreate(t *testing.T) {
123138
},
124139
},
125140
{
126-
args: []string{"my-template","--input","my custom prompt","--org",organizationID.String()},
141+
args: []string{"my custom prompt","--template","my-template","--org",organizationID.String()},
127142
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
128143
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
129144
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","","","my custom prompt")
130145
},
131146
},
132147
{
133-
args: []string{"my-template","--input","my custom prompt","--preset","my-preset","--org",organizationID.String()},
148+
args: []string{"my custom prompt","--template","my-template","--preset","my-preset","--org",organizationID.String()},
134149
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
135150
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
136151
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","","my-preset","my custom prompt")
137152
},
138153
},
139154
{
140-
args: []string{"my-template","--input","my custom prompt"},
155+
args: []string{"my custom prompt","--template","my-template"},
141156
env: []string{"CODER_TASK_PRESET_NAME=my-preset"},
142157
expectOutput:fmt.Sprintf("The task %s has been created at %s!",cliui.Keyword("task-wild-goldfish-27"),cliui.Timestamp(taskCreatedAt)),
143158
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
144159
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","","my-preset","my custom prompt")
145160
},
146161
},
147162
{
148-
args: []string{"my-template","--input","my custom prompt","--preset","not-real-preset"},
163+
args: []string{"my custom prompt","--template","my-template","--preset","not-real-preset"},
149164
expectError:`preset "not-real-preset" not found`,
150165
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
151166
returntemplateAndVersionFoundHandler(t,ctx,organizationID,"my-template","","my-preset","my custom prompt")
152167
},
153168
},
154169
{
155-
args: []string{"my-template@not-real-template-version","--input","my custom prompt"},
170+
args: []string{"my custom prompt","--template","my-template","--template-version","not-real-template-version"},
156171
expectError:httpapi.ResourceNotFoundResponse.Message,
157172
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
158173
returnfunc(w http.ResponseWriter,r*http.Request) {
@@ -163,6 +178,11 @@ func TestTaskCreate(t *testing.T) {
163178
ID:organizationID,
164179
}},
165180
})
181+
casefmt.Sprintf("/api/v2/organizations/%s/templates/my-template",organizationID):
182+
httpapi.Write(ctx,w,http.StatusOK, codersdk.Template{
183+
ID:templateID,
184+
ActiveVersionID:templateVersionID,
185+
})
166186
casefmt.Sprintf("/api/v2/organizations/%s/templates/my-template/versions/not-real-template-version",organizationID):
167187
httpapi.ResourceNotFound(w)
168188
default:
@@ -172,7 +192,7 @@ func TestTaskCreate(t *testing.T) {
172192
},
173193
},
174194
{
175-
args: []string{"not-real-template","--input","my custom prompt","--org",organizationID.String()},
195+
args: []string{"my custom prompt","--template","not-real-template","--org",organizationID.String()},
176196
expectError:httpapi.ResourceNotFoundResponse.Message,
177197
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
178198
returnfunc(w http.ResponseWriter,r*http.Request) {
@@ -192,7 +212,7 @@ func TestTaskCreate(t *testing.T) {
192212
},
193213
},
194214
{
195-
args: []string{"template-in-different-org","--input","my-custom-prompt","--org",anotherOrganizationID.String()},
215+
args: []string{"my-custom-prompt","--template","template-in-different-org","--org",anotherOrganizationID.String()},
196216
expectError:httpapi.ResourceNotFoundResponse.Message,
197217
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
198218
returnfunc(w http.ResponseWriter,r*http.Request) {
@@ -212,7 +232,7 @@ func TestTaskCreate(t *testing.T) {
212232
},
213233
},
214234
{
215-
args: []string{"no-org","--input","my-custom-prompt"},
235+
args: []string{"no-org-prompt"},
216236
expectError:"Must select an organization with --org=<org_name>",
217237
handler:func(t*testing.T,ctx context.Context) http.HandlerFunc {
218238
returnfunc(w http.ResponseWriter,r*http.Request) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp