refactor(pkg/semanticrelease): clean up code

This commit is contained in:
Nightapes
2019-07-22 20:46:48 +02:00
parent 5986e2819a
commit 6267e1cc81
5 changed files with 129 additions and 122 deletions

View File

@@ -2,9 +2,12 @@
package cache
import (
log "github.com/sirupsen/logrus"
"io/ioutil"
"path"
"github.com/Masterminds/semver"
"github.com/Nightapes/go-semantic-release/internal/shared"
"gopkg.in/yaml.v2"
)
@@ -23,31 +26,68 @@ type ReleaseVersionEntry struct {
}
// Write version into .version
func Write(repository string, versionFileContent ReleaseVersion) error {
func Write(repository string, releaseVersion shared.ReleaseVersion) error {
completePath := path.Join(path.Dir(repository), ".version")
data, err := yaml.Marshal(&versionFileContent)
toCache := &ReleaseVersion{
Next: ReleaseVersionEntry{
Commit: releaseVersion.Next.Commit,
Version: releaseVersion.Next.Version.String(),
},
Last: ReleaseVersionEntry{
Commit: releaseVersion.Last.Commit,
Version: releaseVersion.Last.Version.String(),
},
Branch: releaseVersion.Branch,
Draft: releaseVersion.Draft,
}
data, err := yaml.Marshal(toCache)
if err != nil {
return err
}
log.Debugf("Save %s with hash %s to cache", releaseVersion.Next.Version.String(), releaseVersion.Next.Commit)
return ioutil.WriteFile(completePath, data, 0644)
}
// Read version into .version
func Read(repository string) (*ReleaseVersion, error) {
func Read(repository string) (*shared.ReleaseVersion, error) {
completePath := path.Join(path.Dir(repository), ".version")
content, err := ioutil.ReadFile(completePath)
if err != nil {
return &ReleaseVersion{}, err
return &shared.ReleaseVersion{}, err
}
var versionFileContent ReleaseVersion
err = yaml.Unmarshal(content, &versionFileContent)
var parsedContent ReleaseVersion
err = yaml.Unmarshal(content, &parsedContent)
if err != nil {
return &ReleaseVersion{}, err
return &shared.ReleaseVersion{}, err
}
return &versionFileContent, nil
nextVersion, err := semver.NewVersion(parsedContent.Next.Version)
if err != nil {
return nil, err
}
lastVersion, err := semver.NewVersion(parsedContent.Last.Version)
if err != nil {
return nil, err
}
releaseVersion := &shared.ReleaseVersion{
Next: shared.ReleaseVersionEntry{
Commit: parsedContent.Next.Commit,
Version: nextVersion,
},
Last: shared.ReleaseVersionEntry{
Commit: parsedContent.Last.Commit,
Version: lastVersion,
},
Branch: parsedContent.Branch,
Draft: parsedContent.Draft,
}
log.Infof("Found cache, will return cached version %s", parsedContent.Next.Version)
return releaseVersion, nil
}