Skip to content

Commit

Permalink
Merge pull request #1 from marcomilon/refactoring-try-again
Browse files Browse the repository at this point in the history
Refactoring try again
  • Loading branch information
marcomilon authored Oct 4, 2023
2 parents 3ce5be3 + 5920b5f commit e77db2f
Show file tree
Hide file tree
Showing 27 changed files with 465 additions and 636 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ website

build-linux
build-win
build-macos
build-macos

dist
nextgen
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ setup:
clean:
$(GOCLEAN)
rm -rf $(RELEASEDIR)
rm -rf website
rm -rf dist

test:
go test -cover ./...
Expand Down
34 changes: 0 additions & 34 deletions internal/datasource/yaml.go

This file was deleted.

36 changes: 0 additions & 36 deletions internal/datasource/yaml_test.go

This file was deleted.

18 changes: 0 additions & 18 deletions internal/gstatic/defs.go

This file was deleted.

42 changes: 42 additions & 0 deletions internal/gstatic/executor.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package gstatic

import (
"fmt"
"time"
)

type elapsedTime struct {
identifier string
start time.Time
end time.Time
}

type worker interface {
execute() error
}

func executor(identifier string, w worker, debug bool) {
var err error

if debug {
enlapsedTime := StartTimer(identifier)
err = w.execute()
EndTimer(enlapsedTime)
} else {
err = w.execute()
}

if err != nil {
fmt.Printf("Something went wrong: %v\n", err.Error())
}
}

func StartTimer(identifier string) elapsedTime {
return elapsedTime{identifier, time.Now(), time.Time{}}
}

func EndTimer(elapsedTime elapsedTime) {
elapsedTime.end = time.Now()
elapsed := elapsedTime.end.Sub(elapsedTime.start)
fmt.Printf("[%s]: %v\n", elapsedTime.identifier, elapsed)
}
25 changes: 25 additions & 0 deletions internal/gstatic/extractor.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package gstatic

import (
"io"

"gopkg.in/yaml.v2"
)

// getVarsForTpl is a implementation for VarReader. This implementatin will get variables from a Yaml file
func getVarsForTpl(r io.Reader) (map[interface{}]interface{}, error) {

data, err := io.ReadAll(r)
if err != nil {
return nil, err
}

m := make(map[interface{}]interface{})
err = yaml.Unmarshal(data, &m)
if err != nil {
return nil, err
}

return m, nil

}
23 changes: 23 additions & 0 deletions internal/gstatic/extractor_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package gstatic

import (
"strings"
"testing"
)

func TestGetVarsForTpl(t *testing.T) {

s := "hello: Hello world"

r := strings.NewReader(s)

m, err := getVarsForTpl(r)
if err != nil {
t.Errorf("expected %v; got %v", nil, err)
}

if m["hello"] != "Hello world" {
t.Errorf("expected %v; got %v", "Hello world", m["hello"])
}

}
126 changes: 20 additions & 106 deletions internal/gstatic/filesystem.go
Original file line number Diff line number Diff line change
@@ -1,128 +1,42 @@
package gstatic

import (
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
)

func cleanTargetFolder(targetFolder string) error {
err := os.RemoveAll(targetFolder)
// copyFile is used to copy a file from the source folder to the target folder
func copyFile(sourcePath, targetPath string) error {
sourceFile, err := os.Open(sourcePath)
if err != nil {
return err
}

err = os.Mkdir(targetFolder, 0755)
if err != nil {
return err
}

return nil
}

func validateTargetFolder(targetFolder string) error {
if _, err := os.Stat(targetFolder); err != nil {
return errors.New("targetFolder not found")
}

isEmpty, _ := isFolderEmpty(targetFolder)

if !isEmpty {
return errors.New("targetFolder is not empty")
}

return nil
}

func isFolderEmpty(name string) (bool, error) {
f, err := os.Open(name)
if err != nil {
return false, err
}
defer f.Close()

_, err = f.Readdirnames(1) // Or f.Readdir(1)
if err == io.EOF {
return true, nil
}
return false, err // Either not empty or error, suits both cases
}

func getTargetDirname(srcFolder, path string) string {
s := strings.Replace(path, srcFolder, "", 1)
return strings.TrimLeft(s, "/")
}

func mkdir(srcFolder, targetFolder, path string) error {
targetDirname := getTargetDirname(srcFolder, path)
if targetDirname == "layout" {
return nil
}

return os.MkdirAll(targetFolder+string(os.PathSeparator)+targetDirname, 0755)
}

func copyAsset(source, target string) error {

if filepath.Ext(source) == ".yaml" {
return nil
}

sourceFile, err := os.Open(source)
if err != nil {
return err
return fmt.Errorf("[%s] %v", "copyfile", err)
}
defer sourceFile.Close()

newFile, err := os.Create(target)
targetFile, err := os.Create(targetPath)
if err != nil {
return err
return fmt.Errorf("[%s] %v", "copyfile", err)
}
defer newFile.Close()
defer targetFile.Close()

if _, err := io.Copy(newFile, sourceFile); err != nil {
return err
_, err = io.Copy(targetFile, sourceFile)
if err != nil {
return fmt.Errorf("[%s] %v", "copyfile", err)
}

return nil
}

func getSourceFilename(path, sourceFileextension string) string {
filename := filepath.Base(path)
extension := filepath.Ext(filename)
sourceFilename := filename[0 : len(filename)-len(extension)]

dirname := filepath.Dir(path)
return dirname + string(os.PathSeparator) + sourceFilename + sourceFileextension
}

func hasSourceFilename(path, extension string) bool {
sourceFile := getSourceFilename(path, extension)

if _, err := os.Stat(sourceFile); err == nil {
return true
}

return false
}

func mergeSourceFile(path1, path2 string) (io.Reader, error) {

content1, err := ioutil.ReadFile(path1)
if err != nil {
return nil, err
}

content2, err := ioutil.ReadFile(path2)
if err != nil {
return nil, err
// createTargetFolder is used to create the target folder
func createTargetFolder(targetFolder string) error {
_, err := os.Stat(targetFolder)
if os.IsNotExist(err) {
err := os.Mkdir(targetFolder, 0775)
if err != nil {
return fmt.Errorf("[%s] %v", "createTargetFolder", err)
}
}

mergeContent := string(content1) + "\n" + string(content2)

return strings.NewReader(mergeContent), nil

return nil
}
Loading

0 comments on commit e77db2f

Please sign in to comment.