@@ -145,28 +145,48 @@ func (s WorkspaceManager) Get(name string) (Workspace, error) {
145
145
}, nil
146
146
}
147
147
148
- func (s WorkspaceManager ) Edit (name string ) error {
148
+ func (s WorkspaceManager ) Create (name string ) error {
149
149
err := s .createWorkspaceEnvFolder (name )
150
150
if err != nil {
151
151
return err
152
152
}
153
- err = s .createWorkspaceDefaultEnv ( name )
153
+ err = s .createFile ( s . resolveFunctionFile ( name ) )
154
154
if err != nil {
155
155
return err
156
156
}
157
- return s .edit (s .resolveFunctionFile (name ))
157
+ return s .createFile (s .resolveEnvFile (name , s .resolveEnv ("" )))
158
+ }
159
+
160
+ func (s WorkspaceManager ) CreateEnv (name string , env string ) error {
161
+ functionFile := s .resolveFunctionFile (name )
162
+ _ , err := os .Stat (functionFile )
163
+ if err != nil {
164
+ return fmt .Errorf (`check the workspace "%s" exists, create it first` , name )
165
+ }
166
+ return s .createFile (s .resolveEnvFile (name , env ))
167
+ }
168
+
169
+ func (s WorkspaceManager ) Edit (name string ) error {
170
+ functionFile := s .resolveFunctionFile (name )
171
+ _ , err := os .Stat (functionFile )
172
+ if err != nil {
173
+ return fmt .Errorf (`check the workspace "%s" exists` , name )
174
+ }
175
+ return s .editFile (functionFile )
158
176
}
159
177
160
178
func (s WorkspaceManager ) EditEnv (name string , env string ) error {
161
- err := s .createWorkspaceEnvFolder (name )
179
+ functionFile := s .resolveFunctionFile (name )
180
+ _ , err := os .Stat (functionFile )
162
181
if err != nil {
163
- return err
182
+ return fmt . Errorf ( `check the workspace "%s" exists` , name )
164
183
}
165
- err = s .createWorkspaceDefaultEnv (name )
184
+ envFile := s .resolveEnvFile (name , env )
185
+ _ , err = os .Stat (envFile )
166
186
if err != nil {
167
- return err
187
+ return fmt . Errorf ( `check the environment "%s" exists` , env )
168
188
}
169
- return s .edit ( s . resolveWorkspaceEnvFile ( name , env ) )
189
+ return s .editFile ( envFile )
170
190
}
171
191
172
192
func (s WorkspaceManager ) Load (name string , env string ) error {
@@ -189,7 +209,7 @@ func (s WorkspaceManager) appendLoadStatement(name string, env string, functionA
189
209
data := []string {}
190
210
data = append (data , s .createEnvVariableStatement (fmt .Sprintf ("%s_NAME" , envVariablePrefix ), name ))
191
211
data = append (data , s .createEnvVariableStatement (fmt .Sprintf ("%s_ENV" , envVariablePrefix ), s .resolveEnv (env )))
192
- envFile := s .resolveWorkspaceEnvFile (name , env )
212
+ envFile := s .resolveEnvFile (name , env )
193
213
_ , eerr := os .Stat (envFile )
194
214
if eerr == nil {
195
215
data = append (data , fmt .Sprintf ("source %s" , envFile ))
@@ -213,10 +233,15 @@ func (s WorkspaceManager) appendLoadStatement(name string, env string, functionA
213
233
return stmts
214
234
}
215
235
216
- func (s WorkspaceManager ) edit (filepath string ) error {
236
+ func (s WorkspaceManager ) editFile (filepath string ) error {
217
237
return s .execCommand ("-c" , fmt .Sprintf ("%s %s" , s .editor , filepath ))
218
238
}
219
239
240
+ func (s WorkspaceManager ) createFile (filepath string ) error {
241
+ _ , err := os .OpenFile (filepath , os .O_CREATE , 0o666 )
242
+ return err
243
+ }
244
+
220
245
func (s WorkspaceManager ) resolveEnv (env string ) string {
221
246
if env == "" {
222
247
return "default"
@@ -246,7 +271,7 @@ func (s WorkspaceManager) resolveFunctionFile(name string) string {
246
271
return fmt .Sprintf ("%s/%s.%s" , s .getFunctionDir (), name , s .getExtension ())
247
272
}
248
273
249
- func (s WorkspaceManager ) resolveWorkspaceEnvFile (name string , env string ) string {
274
+ func (s WorkspaceManager ) resolveEnvFile (name string , env string ) string {
250
275
return fmt .Sprintf ("%s/%s.%s" , s .getWorkspaceEnvDir (name ), s .resolveEnv (env ), s .getExtension ())
251
276
}
252
277
@@ -267,11 +292,6 @@ func (s WorkspaceManager) createWorkspaceEnvFolder(name string) error {
267
292
return os .MkdirAll (s .getWorkspaceEnvDir (name ), 0o777 )
268
293
}
269
294
270
- func (s WorkspaceManager ) createWorkspaceDefaultEnv (name string ) error {
271
- _ , err := os .OpenFile (s .resolveWorkspaceEnvFile (name , "default" ), os .O_CREATE , 0o666 )
272
- return err
273
- }
274
-
275
295
func (s WorkspaceManager ) getFunctionDir () string {
276
296
return fmt .Sprintf ("%s/functions/%s" , s .configDir , s .shell )
277
297
}
0 commit comments