diff --git a/chore/__debug_bin2080182539 b/chore/__debug_bin2080182539 deleted file mode 100755 index e55695c..0000000 Binary files a/chore/__debug_bin2080182539 and /dev/null differ diff --git a/chore/release.go b/chore/release/release.go similarity index 59% rename from chore/release.go rename to chore/release/release.go index 5ad1361..80076f3 100644 --- a/chore/release.go +++ b/chore/release/release.go @@ -7,13 +7,17 @@ import ( "time" "github.com/Masterminds/semver/v3" + copyright "github.com/coreruleset/crs-toolchain/v2/chore/update_copyright" "github.com/coreruleset/crs-toolchain/v2/context" "github.com/go-git/go-git/v5" + "github.com/rs/zerolog/log" ) +var logger = log.With().Str("component", "release").Logger() + func Release(context *context.Context, repositoryPath string, version *semver.Version, sourceRef string) { createAndCheckOutBranch(context, fmt.Sprintf("v%d.%d.%d", version.Major(), version.Minor(), version.Patch()), sourceRef) - UpdateCopyright(context, version, uint16(time.Now().Year())) + copyright.UpdateCopyright(context, version, uint16(time.Now().Year())) createCommit(context, version) } @@ -23,22 +27,16 @@ func createAndCheckOutBranch(context *context.Context, branchName string, source panic(err) } - cmd := exec.Command("git", "switch", "-c", branchName, sourceRef) - cmd.Dir = context.RootDir() - out, err := cmd.CombinedOutput() - print(out) + out, err := runGit(context.RootDir(), "switch", "-c", branchName, sourceRef) if err != nil { - //FIXME - panic(err) + logger.Fatal().Err(err).Bytes("command-output", out).Msg("failed to create commit for release") } } func createCommit(context *context.Context, version *semver.Version) { - cmd := exec.Command("git", "commit", "-am", "Release "+fmt.Sprintf("v%d.%d.%d", version.Major(), version.Minor(), version.Patch())) - err := cmd.Run() + out, err := runGit(context.RootDir(), "commit", "-am", "Release "+fmt.Sprintf("v%d.%d.%d", version.Major(), version.Minor(), version.Patch())) if err != nil { - //FIXME - panic(err) + logger.Fatal().Err(err).Bytes("command-output", out).Msg("failed to create commit for release") } } @@ -65,3 +63,9 @@ func checkForCleanWorkTree(context *context.Context) error { } return nil } + +func runGit(repositoryPath string, args ...string) ([]byte, error) { + cmd := exec.Command("git", args...) + cmd.Dir = repositoryPath + return cmd.CombinedOutput() +} diff --git a/chore/release_test.go b/chore/release/release_test.go similarity index 86% rename from chore/release_test.go rename to chore/release/release_test.go index 91e0057..d65891f 100644 --- a/chore/release_test.go +++ b/chore/release/release_test.go @@ -1,8 +1,10 @@ package chore import ( + "fmt" "os" "os/exec" + "path" "testing" "github.com/Masterminds/semver/v3" @@ -69,8 +71,9 @@ func (s *choreReleaseTestSuite) TestCreateCommit() { createAndCheckOutBranch(ctxt, branchName, "main") // Add something to commit, as `createCommit` doesn't allow empty commits - os.WriteFile(s.repoDir+"file", []byte("content"), os.ModePerm) + os.WriteFile(path.Join(s.repoDir, "file"), []byte("content"), os.ModePerm) cmd := exec.Command("git", "add", ".") + cmd.Dir = s.repoDir err = cmd.Run() s.Require().NoError(err) @@ -84,15 +87,17 @@ func (s *choreReleaseTestSuite) TestCreateCommit() { s.Require().NoError(err) s.True(status.IsClean()) + // HEAD has the new commit message revision, err := repo.ResolveRevision("HEAD") s.Require().NoError(err) commit, err := repo.CommitObject(*revision) s.Require().NoError(err) - s.Equal("Release "+branchName, commit.Message) + s.Equal(fmt.Sprintf("Release %s\n", branchName), commit.Message) + // parent of HEAD is main parent, err := commit.Parent(0) s.Require().NoError(err) - branch, err := repo.ResolveRevision(plumbing.Revision(branchName)) + branchHash, err := repo.ResolveRevision(plumbing.Revision("main")) s.Require().NoError(err) - s.Equal(*branch, parent.Hash) + s.Equal(*branchHash, parent.Hash) } diff --git a/chore/update_copyright.go b/chore/update_copyright/update_copyright.go similarity index 100% rename from chore/update_copyright.go rename to chore/update_copyright/update_copyright.go diff --git a/chore/update_copyright_test.go b/chore/update_copyright/update_copyright_test.go similarity index 100% rename from chore/update_copyright_test.go rename to chore/update_copyright/update_copyright_test.go diff --git a/cmd/chore_release.go b/cmd/chore_release.go index 91e4fc1..cd66d97 100644 --- a/cmd/chore_release.go +++ b/cmd/chore_release.go @@ -7,7 +7,7 @@ import ( "os" "github.com/Masterminds/semver/v3" - "github.com/coreruleset/crs-toolchain/v2/chore" + release "github.com/coreruleset/crs-toolchain/v2/chore/release" "github.com/coreruleset/crs-toolchain/v2/context" "github.com/spf13/cobra" ) @@ -52,7 +52,7 @@ func createChoreReleaseCommand() *cobra.Command { }, Run: func(cmd *cobra.Command, args []string) { rootContext := context.New(rootValues.workingDirectory.String(), rootValues.configurationFileName.String()) - chore.Release(rootContext, releaseParsedArgs.repositoryPath, releaseParsedArgs.version, releaseVariables.sourceRef) + release.Release(rootContext, releaseParsedArgs.repositoryPath, releaseParsedArgs.version, releaseVariables.sourceRef) }, } } diff --git a/cmd/chore_update_copyright.go b/cmd/chore_update_copyright.go index bebbf88..d199c10 100644 --- a/cmd/chore_update_copyright.go +++ b/cmd/chore_update_copyright.go @@ -10,7 +10,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/spf13/cobra" - "github.com/coreruleset/crs-toolchain/v2/chore" + copyright "github.com/coreruleset/crs-toolchain/v2/chore/update_copyright" "github.com/coreruleset/crs-toolchain/v2/context" ) @@ -48,7 +48,7 @@ func createChoreUpdateCopyrightCommand() *cobra.Command { }, Run: func(cmd *cobra.Command, args []string) { rootContext := context.New(rootValues.workingDirectory.String(), rootValues.configurationFileName.String()) - chore.UpdateCopyright(rootContext, copyrightParsedVariables.version, copyrightVariables.Year) + copyright.UpdateCopyright(rootContext, copyrightParsedVariables.version, copyrightVariables.Year) }, } }