Skip to content

Commit e77db2f

Browse files
authored
Merge pull request #1 from marcomilon/refactoring-try-again
Refactoring try again
2 parents 3ce5be3 + 5920b5f commit e77db2f

27 files changed

+465
-636
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ website
2121

2222
build-linux
2323
build-win
24-
build-macos
24+
build-macos
25+
26+
dist
27+
nextgen

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ setup:
1414
clean:
1515
$(GOCLEAN)
1616
rm -rf $(RELEASEDIR)
17-
rm -rf website
17+
rm -rf dist
1818

1919
test:
2020
go test -cover ./...

internal/datasource/yaml.go

Lines changed: 0 additions & 34 deletions
This file was deleted.

internal/datasource/yaml_test.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

internal/gstatic/defs.go

Lines changed: 0 additions & 18 deletions
This file was deleted.

internal/gstatic/executor.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package gstatic
2+
3+
import (
4+
"fmt"
5+
"time"
6+
)
7+
8+
type elapsedTime struct {
9+
identifier string
10+
start time.Time
11+
end time.Time
12+
}
13+
14+
type worker interface {
15+
execute() error
16+
}
17+
18+
func executor(identifier string, w worker, debug bool) {
19+
var err error
20+
21+
if debug {
22+
enlapsedTime := StartTimer(identifier)
23+
err = w.execute()
24+
EndTimer(enlapsedTime)
25+
} else {
26+
err = w.execute()
27+
}
28+
29+
if err != nil {
30+
fmt.Printf("Something went wrong: %v\n", err.Error())
31+
}
32+
}
33+
34+
func StartTimer(identifier string) elapsedTime {
35+
return elapsedTime{identifier, time.Now(), time.Time{}}
36+
}
37+
38+
func EndTimer(elapsedTime elapsedTime) {
39+
elapsedTime.end = time.Now()
40+
elapsed := elapsedTime.end.Sub(elapsedTime.start)
41+
fmt.Printf("[%s]: %v\n", elapsedTime.identifier, elapsed)
42+
}

internal/gstatic/extractor.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package gstatic
2+
3+
import (
4+
"io"
5+
6+
"gopkg.in/yaml.v2"
7+
)
8+
9+
// getVarsForTpl is a implementation for VarReader. This implementatin will get variables from a Yaml file
10+
func getVarsForTpl(r io.Reader) (map[interface{}]interface{}, error) {
11+
12+
data, err := io.ReadAll(r)
13+
if err != nil {
14+
return nil, err
15+
}
16+
17+
m := make(map[interface{}]interface{})
18+
err = yaml.Unmarshal(data, &m)
19+
if err != nil {
20+
return nil, err
21+
}
22+
23+
return m, nil
24+
25+
}

internal/gstatic/extractor_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package gstatic
2+
3+
import (
4+
"strings"
5+
"testing"
6+
)
7+
8+
func TestGetVarsForTpl(t *testing.T) {
9+
10+
s := "hello: Hello world"
11+
12+
r := strings.NewReader(s)
13+
14+
m, err := getVarsForTpl(r)
15+
if err != nil {
16+
t.Errorf("expected %v; got %v", nil, err)
17+
}
18+
19+
if m["hello"] != "Hello world" {
20+
t.Errorf("expected %v; got %v", "Hello world", m["hello"])
21+
}
22+
23+
}

internal/gstatic/filesystem.go

Lines changed: 20 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,42 @@
11
package gstatic
22

33
import (
4-
"errors"
4+
"fmt"
55
"io"
6-
"io/ioutil"
76
"os"
8-
"path/filepath"
9-
"strings"
107
)
118

12-
func cleanTargetFolder(targetFolder string) error {
13-
err := os.RemoveAll(targetFolder)
9+
// copyFile is used to copy a file from the source folder to the target folder
10+
func copyFile(sourcePath, targetPath string) error {
11+
sourceFile, err := os.Open(sourcePath)
1412
if err != nil {
15-
return err
16-
}
17-
18-
err = os.Mkdir(targetFolder, 0755)
19-
if err != nil {
20-
return err
21-
}
22-
23-
return nil
24-
}
25-
26-
func validateTargetFolder(targetFolder string) error {
27-
if _, err := os.Stat(targetFolder); err != nil {
28-
return errors.New("targetFolder not found")
29-
}
30-
31-
isEmpty, _ := isFolderEmpty(targetFolder)
32-
33-
if !isEmpty {
34-
return errors.New("targetFolder is not empty")
35-
}
36-
37-
return nil
38-
}
39-
40-
func isFolderEmpty(name string) (bool, error) {
41-
f, err := os.Open(name)
42-
if err != nil {
43-
return false, err
44-
}
45-
defer f.Close()
46-
47-
_, err = f.Readdirnames(1) // Or f.Readdir(1)
48-
if err == io.EOF {
49-
return true, nil
50-
}
51-
return false, err // Either not empty or error, suits both cases
52-
}
53-
54-
func getTargetDirname(srcFolder, path string) string {
55-
s := strings.Replace(path, srcFolder, "", 1)
56-
return strings.TrimLeft(s, "/")
57-
}
58-
59-
func mkdir(srcFolder, targetFolder, path string) error {
60-
targetDirname := getTargetDirname(srcFolder, path)
61-
if targetDirname == "layout" {
62-
return nil
63-
}
64-
65-
return os.MkdirAll(targetFolder+string(os.PathSeparator)+targetDirname, 0755)
66-
}
67-
68-
func copyAsset(source, target string) error {
69-
70-
if filepath.Ext(source) == ".yaml" {
71-
return nil
72-
}
73-
74-
sourceFile, err := os.Open(source)
75-
if err != nil {
76-
return err
13+
return fmt.Errorf("[%s] %v", "copyfile", err)
7714
}
7815
defer sourceFile.Close()
7916

80-
newFile, err := os.Create(target)
17+
targetFile, err := os.Create(targetPath)
8118
if err != nil {
82-
return err
19+
return fmt.Errorf("[%s] %v", "copyfile", err)
8320
}
84-
defer newFile.Close()
21+
defer targetFile.Close()
8522

86-
if _, err := io.Copy(newFile, sourceFile); err != nil {
87-
return err
23+
_, err = io.Copy(targetFile, sourceFile)
24+
if err != nil {
25+
return fmt.Errorf("[%s] %v", "copyfile", err)
8826
}
8927

9028
return nil
9129
}
9230

93-
func getSourceFilename(path, sourceFileextension string) string {
94-
filename := filepath.Base(path)
95-
extension := filepath.Ext(filename)
96-
sourceFilename := filename[0 : len(filename)-len(extension)]
97-
98-
dirname := filepath.Dir(path)
99-
return dirname + string(os.PathSeparator) + sourceFilename + sourceFileextension
100-
}
101-
102-
func hasSourceFilename(path, extension string) bool {
103-
sourceFile := getSourceFilename(path, extension)
104-
105-
if _, err := os.Stat(sourceFile); err == nil {
106-
return true
107-
}
108-
109-
return false
110-
}
111-
112-
func mergeSourceFile(path1, path2 string) (io.Reader, error) {
113-
114-
content1, err := ioutil.ReadFile(path1)
115-
if err != nil {
116-
return nil, err
117-
}
118-
119-
content2, err := ioutil.ReadFile(path2)
120-
if err != nil {
121-
return nil, err
31+
// createTargetFolder is used to create the target folder
32+
func createTargetFolder(targetFolder string) error {
33+
_, err := os.Stat(targetFolder)
34+
if os.IsNotExist(err) {
35+
err := os.Mkdir(targetFolder, 0775)
36+
if err != nil {
37+
return fmt.Errorf("[%s] %v", "createTargetFolder", err)
38+
}
12239
}
12340

124-
mergeContent := string(content1) + "\n" + string(content2)
125-
126-
return strings.NewReader(mergeContent), nil
127-
41+
return nil
12842
}

0 commit comments

Comments
 (0)