From af71c23260110506f7ea774cc15fc6674cffd10c Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Sun, 9 May 2021 20:20:04 +0100 Subject: [PATCH] Fix: Issue with sorting commits after specifying hash. --- .github/workflows/release.yaml | 16 +++++----- cmd/main.go | 58 +++++++++++++++++++++++++++++----- cmd/main_test.go | 14 ++++---- cmd/root.go | 2 ++ config.yaml | 5 ++- 5 files changed, 69 insertions(+), 26 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 54d3704..482c5db 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -75,14 +75,14 @@ jobs: - name: Run unit tests run: | make test CI_RUN=${CI} - - name: Codeclimate - uses: paambaati/codeclimate-action@v2.7.5 - with: - coverageCommand: go test -race -coverprofile=cover.out -covermode=atomic -v -bench=. ./... - coverageLocations: - "${{github.workspace}}/cover.out:gocov" - env: - CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_KEY }} + # - name: Codeclimate + # uses: paambaati/codeclimate-action@v2.7.5 + # with: + # coverageCommand: go test -race -coverprofile=cover.out -covermode=atomic -v -bench=. ./... + # coverageLocations: + # "${{github.workspace}}/cover.out:gocov" + # env: + # CC_TEST_REPORTER_ID: ${{ secrets.CODECLIMATE_KEY }} code_scans: needs: [ prepare ] diff --git a/cmd/main.go b/cmd/main.go index 23c10c5..16897d5 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -88,18 +88,30 @@ func checkMatches(content []string, targets []string) bool { func (s *Setup) CalculateSemver() SemVer { for _, commit := range s.Commits { s.Semver.Patch++ + if varDebug { + fmt.Println("DEBUG: Incrementing patch (DEFAULT) on ", commit.Message) + } commitSlice := strings.Split(commit.Message, " ") matchPatch := checkMatches(commitSlice, s.Wording.Patch) matchMinor := checkMatches(commitSlice, s.Wording.Minor) matchMajor := checkMatches(commitSlice, s.Wording.Major) if matchPatch { + if varDebug { + fmt.Println("DEBUG: Incrementing patch (WORDING) on ", commit.Message) + } s.Semver.Patch++ } if matchMinor { + if varDebug { + fmt.Println("DEBUG: Incrementing minor (WORDING) on ", commit.Message) + } s.Semver.Minor++ s.Semver.Patch = 1 } if matchMajor { + if varDebug { + fmt.Println("DEBUG: Incrementing major (WORDING) on ", commit.Message) + } s.Semver.Major++ s.Semver.Minor = 0 s.Semver.Patch = 1 @@ -111,23 +123,44 @@ func (s *Setup) CalculateSemver() SemVer { func (s *Setup) ListCommits() ([]CommitDetails, error) { var ref *plumbing.Reference var err error - if zero.IsZero(s.Force.Commit) { - ref, err = s.RepositoryHandler.Head() - } else { - ref = plumbing.NewHashReference("start_commit", plumbing.NewHash(s.Force.Commit)) - } + + // if zero.IsZero(s.Force.Commit) { + ref, err = s.RepositoryHandler.Head() + // } else { + // if varDebug { + // fmt.Println("DEBUG: Forced start from commit", s.Force.Commit) + // } + // ref = plumbing.NewHashReference("start_commit", plumbing.NewHash(s.Force.Commit)) + // } if err != nil { return []CommitDetails{}, err } - commitsList, err := s.RepositoryHandler.Log(&git.LogOptions{From: ref.Hash(), Order: git.LogOrderBSF}) + commitsList, err := s.RepositoryHandler.Log(&git.LogOptions{From: ref.Hash()}) if err != nil { return []CommitDetails{}, err } + + var tmpResults []CommitDetails commitsList.ForEach(func(c *object.Commit) error { - s.Commits = append(s.Commits, CommitDetails{Hash: c.Hash.String(), Author: c.Author.String(), Message: c.Message, Timestamp: c.Author.When}) - sort.Slice(s.Commits, func(i, j int) bool { return s.Commits[i].Timestamp.Unix() < s.Commits[j].Timestamp.Unix() }) + tmpResults = append(tmpResults, CommitDetails{Hash: c.Hash.String(), Author: c.Author.String(), Message: c.Message, Timestamp: c.Author.When}) + sort.Slice(tmpResults, func(i, j int) bool { return tmpResults[i].Timestamp.Unix() < tmpResults[j].Timestamp.Unix() }) return nil }) + + if varDebug { + fmt.Println("\n---COMMITS BEFORE CUT---\n", tmpResults) + } + + for commitId, cmt := range tmpResults { + if zero.IsZero(s.Force.Commit) || (!zero.IsZero(s.Force.Commit) && cmt.Hash == s.Force.Commit) { + s.Commits = tmpResults[commitId:] + } + } + + if varDebug { + fmt.Println("\n---COMMITS AFTER CUT---\n", s.Commits) + } + return s.Commits, err } @@ -159,12 +192,21 @@ func (s *Setup) Prepare() error { func (s *Setup) ForcedVersioning() { if !zero.IsZero(s.Force.Major) { + if varDebug { + fmt.Println("DEBUG: Forced versioning (MAJOR)", s.Force.Major) + } s.Semver.Major = s.Force.Major } if !zero.IsZero(s.Force.Minor) { + if varDebug { + fmt.Println("DEBUG: Forced versioning (MINOR)", s.Force.Minor) + } s.Semver.Minor = s.Force.Minor } if !zero.IsZero(s.Force.Patch) { + if varDebug { + fmt.Println("DEBUG: Forced versioning (PATCH)", s.Force.Patch) + } s.Semver.Patch = s.Force.Patch } } diff --git a/cmd/main_test.go b/cmd/main_test.go index 6cfbf2a..1b12b29 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -290,7 +290,7 @@ func (suite *Tests) TestSetup_ListCommits() { fields: fields{ RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", Force: Force{ - Commit: "69fbe2df696f40281b9104ff073d26186cde1024", + Commit: "97d3682ed94168600926f9ff6da650403d1f3317", }, }, noCommits: false, @@ -336,8 +336,8 @@ func (suite *Tests) TestSetup_CalculateSemver() { RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", }, wantSemver: wantSemver{ - Major: 5, - Minor: 1, + Major: 1, + Minor: 2, Patch: 1, }, }, @@ -346,13 +346,13 @@ func (suite *Tests) TestSetup_CalculateSemver() { fields: fields{ RepositoryName: "https://github.com/lukaszraczylo/simple-gql-client", Force: Force{ - Commit: "69fbe2df696f40281b9104ff073d26186cde1024", + Commit: "97d3682ed94168600926f9ff6da650403d1f3317", }, }, wantSemver: wantSemver{ - Major: 3, - Minor: 0, - Patch: 5, + Major: 1, + Minor: 2, + Patch: 1, }, }, { diff --git a/cmd/root.go b/cmd/root.go index 63ecbae..2e19141 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -58,6 +58,7 @@ var ( varRepoName, varLocalCfg string varUseLocal bool varShowVersion bool + varDebug bool ) func init() { @@ -68,5 +69,6 @@ func init() { rootCmd.PersistentFlags().StringVarP(&varLocalCfg, "config", "c", "config.yaml", "Path to config file") rootCmd.PersistentFlags().BoolVarP(&varUseLocal, "local", "l", false, "Use local repository") rootCmd.PersistentFlags().BoolVarP(&varShowVersion, "version", "v", false, "Display version") + rootCmd.PersistentFlags().BoolVarP(&varDebug, "debug", "d", false, "Enable debug mode") } } diff --git a/config.yaml b/config.yaml index 8de3e6e..4e12444 100644 --- a/config.yaml +++ b/config.yaml @@ -1,7 +1,7 @@ version: 1 force: major: 1 - # commit: 69fbe2df696f40281b9104ff073d26186cde1024 + commit: 97d3682ed94168600926f9ff6da650403d1f3317 wording: patch: - update @@ -12,5 +12,4 @@ wording: - change - improve major: - - breaking - - the # For testing purposes \ No newline at end of file + - breaking \ No newline at end of file