Skip to content

Commit ceebc75

Browse files
committed
Create the template if it does not exist
1 parent d05f331 commit ceebc75

File tree

1 file changed

+28
-8
lines changed

1 file changed

+28
-8
lines changed

cli/templatepush.go

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,11 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
186186
return err
187187
}
188188

189+
var templateExists bool
189190
template, err := client.TemplateByName(inv.Context(), organization.ID, name)
190-
if err != nil {
191+
if create && err == nil {
192+
templateExists = true
193+
} else if !create && err != nil {
191194
return err
192195
}
193196

@@ -208,19 +211,24 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
208211
return err
209212
}
210213

211-
job, err := createValidTemplateVersion(inv, createValidTemplateVersionArgs{
212-
Name: versionName,
214+
args := createValidTemplateVersionArgs{
213215
Message: message,
214216
Client: client,
215217
Organization: organization,
216218
Provisioner: database.ProvisionerType(provisioner),
217219
FileID: resp.ID,
220+
ProvisionerTags: tags,
218221
VariablesFile: variablesFile,
219222
Variables: variables,
220-
Template: &template,
221-
ReuseParameters: !alwaysPrompt,
222-
ProvisionerTags: tags,
223-
})
223+
}
224+
225+
if templateExists {
226+
args.Name = versionName
227+
args.Template = &template
228+
args.ReuseParameters = !alwaysPrompt
229+
}
230+
231+
job, err := createValidTemplateVersion(inv, args)
224232
if err != nil {
225233
return err
226234
}
@@ -229,7 +237,19 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
229237
return xerrors.Errorf("job failed: %s", job.Job.Status)
230238
}
231239

232-
if activate {
240+
if !templateExists {
241+
_, err = client.CreateTemplate(inv.Context(), organization.ID, codersdk.CreateTemplateRequest{
242+
Name: name,
243+
VersionID: job.ID,
244+
})
245+
if err != nil {
246+
return err
247+
}
248+
249+
_, _ = fmt.Fprintln(inv.Stdout, "\n"+cliui.DefaultStyles.Wrap.Render(
250+
"The "+cliui.DefaultStyles.Keyword.Render(name)+" template has been created at "+cliui.DefaultStyles.DateTimeStamp.Render(time.Now().Format(time.Stamp))+"! "+
251+
"Developers can provision a workspace with this template using:")+"\n")
252+
} else if activate {
233253
err = client.UpdateActiveTemplateVersion(inv.Context(), template.ID, codersdk.UpdateActiveTemplateVersion{
234254
ID: job.ID,
235255
})

0 commit comments

Comments
 (0)