@@ -4,15 +4,30 @@ import (
4
4
"fmt"
5
5
)
6
6
7
- var version = "3.0"
7
+ const version = "3.0"
8
+ const defaultYamlFile = "resources/default.yaml"
9
+ const defaultCMFFile = ".cmf.yaml"
8
10
9
11
type Repository interface {
10
12
CheckWorkspaceChanges ()
11
13
Commit (message string )
12
14
Amend (message string )
13
15
}
16
+
17
+ type TemplateManager interface {
18
+ Run (yamlData string , injectedVariables map [string ]string ) (string , error )
19
+ }
20
+
21
+ type FS interface {
22
+ GetFileFromVirtualFS (path string ) (string , error )
23
+ GetFileFromFS (path string ) (string , error )
24
+ GetCurrentDirectory () (string , error )
25
+ }
26
+
14
27
type cmf struct {
15
- repository Repository
28
+ repository Repository
29
+ templateManager TemplateManager
30
+ fs FS
16
31
}
17
32
18
33
type CMF interface {
@@ -22,9 +37,11 @@ type CMF interface {
22
37
InitializeProject ()
23
38
}
24
39
25
- func NewCMF (repository Repository ) CMF {
40
+ func NewCMF (repository Repository , templateManager TemplateManager , fsManager FS ) CMF {
26
41
return & cmf {
27
- repository : repository ,
42
+ repository : repository ,
43
+ templateManager : templateManager ,
44
+ fs : fsManager ,
28
45
}
29
46
}
30
47
@@ -36,8 +53,15 @@ func (cmfInstance *cmf) GetVersion() {
36
53
// CommitChanges perform a commit changes over current repository
37
54
func (cmfInstance * cmf ) CommitChanges () {
38
55
cmfInstance .repository .CheckWorkspaceChanges ()
39
- // message := template.Run()
40
- cmfInstance .repository .Commit ("message" )
56
+ currentDirectory , _ := cmfInstance .fs .GetCurrentDirectory ()
57
+ cmfFile , err := cmfInstance .fs .GetFileFromFS (currentDirectory + "/" + defaultCMFFile )
58
+ if err != nil {
59
+ cmfFile , _ = cmfInstance .fs .GetFileFromVirtualFS (defaultYamlFile )
60
+ }
61
+
62
+ extra := map [string ]string {}
63
+ message , _ := cmfInstance .templateManager .Run (cmfFile , extra )
64
+ cmfInstance .repository .Commit (message )
41
65
}
42
66
43
67
// CommitAmend perform a commit amend over current repository
0 commit comments