@@ -27,7 +27,8 @@ func templateCreate() *cobra.Command {
27
27
)
28
28
cmd := & cobra.Command {
29
29
Use : "create [name]" ,
30
- Short : "Create a template from the current directory" ,
30
+ Short : "Create a template from the current directory or as specified by flag" ,
31
+ Args : cobra .MaximumNArgs (1 ),
31
32
RunE : func (cmd * cobra.Command , args []string ) error {
32
33
client , err := createClient (cmd )
33
34
if err != nil {
@@ -51,19 +52,10 @@ func templateCreate() *cobra.Command {
51
52
return xerrors .Errorf ("A template already exists named %q!" , templateName )
52
53
}
53
54
54
- // Confirm upload of the users current directory.
55
- // Truncate if in the home directory, because a shorter path looks nicer.
56
- displayDirectory := directory
57
- userHomeDir , err := os .UserHomeDir ()
58
- if err != nil {
59
- return xerrors .Errorf ("get home dir: %w" , err )
60
- }
61
- if strings .HasPrefix (displayDirectory , userHomeDir ) {
62
- displayDirectory = strings .TrimPrefix (displayDirectory , userHomeDir )
63
- displayDirectory = "~" + displayDirectory
64
- }
55
+ // Confirm upload of the directory.
56
+ prettyDir := prettyDirectoryPath (directory )
65
57
_ , err = cliui .Prompt (cmd , cliui.PromptOptions {
66
- Text : fmt .Sprintf ("Create and upload %q?" , displayDirectory ),
58
+ Text : fmt .Sprintf ("Create and upload %q?" , prettyDir ),
67
59
IsConfirm : true ,
68
60
Default : "yes" ,
69
61
})
@@ -73,7 +65,7 @@ func templateCreate() *cobra.Command {
73
65
74
66
spin := spinner .New (spinner .CharSets [5 ], 100 * time .Millisecond )
75
67
spin .Writer = cmd .OutOrStdout ()
76
- spin .Suffix = cliui .Styles .Keyword .Render (" Uploading current directory..." )
68
+ spin .Suffix = cliui .Styles .Keyword .Render (" Uploading directory..." )
77
69
spin .Start ()
78
70
defer spin .Stop ()
79
71
archive , err := provisionersdk .Tar (directory , provisionersdk .TemplateArchiveLimit )
@@ -123,9 +115,9 @@ func templateCreate() *cobra.Command {
123
115
}
124
116
currentDirectory , _ := os .Getwd ()
125
117
cmd .Flags ().StringVarP (& directory , "directory" , "d" , currentDirectory , "Specify the directory to create from" )
126
- cmd .Flags ().StringVarP (& provisioner , "provisioner" , "p " , "terraform" , "Customize the provisioner backend" )
118
+ cmd .Flags ().StringVarP (& provisioner , "test. provisioner" , "" , "terraform" , "Customize the provisioner backend" )
127
119
// This is for testing!
128
- err := cmd .Flags ().MarkHidden ("provisioner" )
120
+ err := cmd .Flags ().MarkHidden ("test. provisioner" )
129
121
if err != nil {
130
122
panic (err )
131
123
}
@@ -228,3 +220,20 @@ func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, org
228
220
229
221
return & version , parameters , nil
230
222
}
223
+
224
+ // prettyDirectoryPath returns a prettified path when inside the users
225
+ // home directory. Falls back to dir if the users home directory cannot
226
+ // discerned. This function calls filepath.Clean on the result.
227
+ func prettyDirectoryPath (dir string ) string {
228
+ dir = filepath .Clean (dir )
229
+ homeDir , err := os .UserHomeDir ()
230
+ if err != nil {
231
+ return dir
232
+ }
233
+ pretty := dir
234
+ if strings .HasPrefix (pretty , homeDir ) {
235
+ pretty = strings .TrimPrefix (pretty , homeDir )
236
+ pretty = "~" + pretty
237
+ }
238
+ return pretty
239
+ }
0 commit comments