feat(cli): add quiet flag to task create (#19701)

Allows passing `--quiet` (or `-q`) to the task create command so that it
only prints the ID of the task.
This commit is contained in:
Danielle Maywood
2025-09-04 10:03:22 +01:00
committed by GitHub
parent f867a9d481
commit f94abfc83e
2 changed files with 30 additions and 9 deletions
+18 -6
View File
@@ -22,6 +22,7 @@ func (r *RootCmd) taskCreate() *serpent.Command {
templateVersionName string
presetName string
stdin bool
quiet bool
)
cmd := &serpent.Command{
@@ -57,6 +58,13 @@ func (r *RootCmd) taskCreate() *serpent.Command {
Description: "Reads from stdin for the task input.",
Value: serpent.BoolOf(&stdin),
},
{
Name: "quiet",
Flag: "quiet",
FlagShorthand: "q",
Description: "Only display the created task's ID.",
Value: serpent.BoolOf(&quiet),
},
},
Handler: func(inv *serpent.Invocation) error {
var (
@@ -166,12 +174,16 @@ func (r *RootCmd) taskCreate() *serpent.Command {
return xerrors.Errorf("create task: %w", err)
}
_, _ = fmt.Fprintf(
inv.Stdout,
"The task %s has been created at %s!\n",
cliui.Keyword(task.Name),
cliui.Timestamp(task.CreatedAt),
)
if quiet {
_, _ = fmt.Fprintln(inv.Stdout, task.ID)
} else {
_, _ = fmt.Fprintf(
inv.Stdout,
"The task %s has been created at %s!\n",
cliui.Keyword(task.Name),
cliui.Timestamp(task.CreatedAt),
)
}
return nil
},
+12 -3
View File
@@ -31,6 +31,7 @@ func TestTaskCreate(t *testing.T) {
templateID = uuid.New()
templateVersionID = uuid.New()
templateVersionPresetID = uuid.New()
taskID = uuid.New()
)
templateAndVersionFoundHandler := func(t *testing.T, ctx context.Context, orgID uuid.UUID, templateName, templateVersionName, presetName, prompt string) http.HandlerFunc {
@@ -44,11 +45,11 @@ func TestTaskCreate(t *testing.T) {
ID: orgID,
}},
})
case fmt.Sprintf("/api/v2/organizations/%s/templates/my-template/versions/my-template-version", orgID):
case fmt.Sprintf("/api/v2/organizations/%s/templates/%s/versions/%s", orgID, templateName, templateVersionName):
httpapi.Write(ctx, w, http.StatusOK, codersdk.TemplateVersion{
ID: templateVersionID,
})
case fmt.Sprintf("/api/v2/organizations/%s/templates/my-template", orgID):
case fmt.Sprintf("/api/v2/organizations/%s/templates/%s", orgID, templateName):
httpapi.Write(ctx, w, http.StatusOK, codersdk.Template{
ID: templateID,
ActiveVersionID: templateVersionID,
@@ -83,7 +84,8 @@ func TestTaskCreate(t *testing.T) {
assert.Equal(t, templateVersionPresetID, req.TemplateVersionPresetID, "template version preset id mismatch")
}
httpapi.Write(ctx, w, http.StatusCreated, codersdk.Workspace{
httpapi.Write(ctx, w, http.StatusCreated, codersdk.Task{
ID: taskID,
Name: "task-wild-goldfish-27",
CreatedAt: taskCreatedAt,
})
@@ -161,6 +163,13 @@ func TestTaskCreate(t *testing.T) {
return templateAndVersionFoundHandler(t, ctx, organizationID, "my-template", "", "my-preset", "my custom prompt")
},
},
{
args: []string{"my custom prompt", "-q"},
expectOutput: taskID.String(),
handler: func(t *testing.T, ctx context.Context) http.HandlerFunc {
return templateAndVersionFoundHandler(t, ctx, organizationID, "my-template", "my-template-version", "", "my custom prompt")
},
},
{
args: []string{"my custom prompt", "--template", "my-template", "--preset", "not-real-preset"},
expectError: `preset "not-real-preset" not found`,