@@ -186,8 +186,11 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
186
186
return err
187
187
}
188
188
189
+ var templateExists bool
189
190
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 {
191
194
return err
192
195
}
193
196
@@ -208,19 +211,24 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
208
211
return err
209
212
}
210
213
211
- job , err := createValidTemplateVersion (inv , createValidTemplateVersionArgs {
212
- Name : versionName ,
214
+ args := createValidTemplateVersionArgs {
213
215
Message : message ,
214
216
Client : client ,
215
217
Organization : organization ,
216
218
Provisioner : database .ProvisionerType (provisioner ),
217
219
FileID : resp .ID ,
220
+ ProvisionerTags : tags ,
218
221
VariablesFile : variablesFile ,
219
222
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 )
224
232
if err != nil {
225
233
return err
226
234
}
@@ -229,7 +237,19 @@ func (r *RootCmd) templatePush() *clibase.Cmd {
229
237
return xerrors .Errorf ("job failed: %s" , job .Job .Status )
230
238
}
231
239
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 {
233
253
err = client .UpdateActiveTemplateVersion (inv .Context (), template .ID , codersdk.UpdateActiveTemplateVersion {
234
254
ID : job .ID ,
235
255
})
0 commit comments