Add implementation, rename to target_commit

This commit is contained in:
Christoph Sassenberg
2017-10-12 17:30:18 +02:00
parent a200915862
commit 9968f6d17f
4 changed files with 39 additions and 8 deletions

View File

@@ -32,6 +32,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
} }
var foundRelease *github.RepositoryRelease var foundRelease *github.RepositoryRelease
var commitSHA string
if request.Version.Tag != "" { if request.Version.Tag != "" {
foundRelease, err = c.github.GetReleaseByTag(request.Version.Tag) foundRelease, err = c.github.GetReleaseByTag(request.Version.Tag)
@@ -61,6 +62,13 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
return InResponse{}, err return InResponse{}, err
} }
commitPath := filepath.Join(destDir, "target_commit")
commitSHA = c.resolveTagToCommitSHA(*foundRelease.TagName)
err = ioutil.WriteFile(commitPath, []byte(commitSHA), 0644)
if err != nil {
return InResponse{}, err
}
if foundRelease.Body != nil && *foundRelease.Body != "" { if foundRelease.Body != nil && *foundRelease.Body != "" {
body := *foundRelease.Body body := *foundRelease.Body
bodyPath := filepath.Join(destDir, "body") bodyPath := filepath.Join(destDir, "body")
@@ -133,7 +141,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
return InResponse{ return InResponse{
Version: versionFromRelease(foundRelease), Version: versionFromRelease(foundRelease),
Metadata: metadataFromRelease(foundRelease), Metadata: metadataFromRelease(foundRelease, commitSHA),
}, nil }, nil
} }
@@ -182,3 +190,19 @@ func (c *InCommand) downloadFile(url, destPath string) error {
return nil return nil
} }
func (c *InCommand) resolveTagToCommitSHA(tag string) string {
reference, err := c.github.GetRef(tag)
if err != nil {
fmt.Fprintln(c.writer, "could not resolve tag '%s' to commit: %v", tag, err)
return ""
}
if *reference.Object.Type != "commit" {
fmt.Fprintln(c.writer, "could not resolve tag '%s' to commit: returned type is not 'commit' - only lightweight tags are supported", tag)
return ""
}
return *reference.Object.SHA
}

View File

@@ -142,7 +142,7 @@ var _ = Describe("In Command", func() {
resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"}, resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"},
resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true}, resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true},
resource.MetadataPair{Name: "tag", Value: "v0.35.0"}, resource.MetadataPair{Name: "tag", Value: "v0.35.0"},
resource.MetadataPair{Name: "commit_sha", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"}, resource.MetadataPair{Name: "target_commit", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"},
)) ))
}) })
@@ -171,7 +171,7 @@ var _ = Describe("In Command", func() {
Ω(err).ShouldNot(HaveOccurred()) Ω(err).ShouldNot(HaveOccurred())
Ω(string(contents)).Should(Equal("0.35.0")) Ω(string(contents)).Should(Equal("0.35.0"))
contents, err = ioutil.ReadFile(path.Join(destDir, "commit_sha")) contents, err = ioutil.ReadFile(path.Join(destDir, "target_commit"))
Ω(err).ShouldNot(HaveOccurred()) Ω(err).ShouldNot(HaveOccurred())
Ω(string(contents)).Should(Equal("f28085a4a8f744da83411f5e09fd7b1709149eee")) Ω(string(contents)).Should(Equal("f28085a4a8f744da83411f5e09fd7b1709149eee"))
@@ -361,7 +361,7 @@ var _ = Describe("In Command", func() {
resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"}, resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"},
resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true}, resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true},
resource.MetadataPair{Name: "tag", Value: "v0.35.0"}, resource.MetadataPair{Name: "tag", Value: "v0.35.0"},
resource.MetadataPair{Name: "commit_sha", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"}, resource.MetadataPair{Name: "target_commit", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"},
)) ))
}) })
@@ -455,7 +455,7 @@ var _ = Describe("In Command", func() {
resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"}, resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"},
resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true}, resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true},
resource.MetadataPair{Name: "tag", Value: "v0.35.0"}, resource.MetadataPair{Name: "tag", Value: "v0.35.0"},
resource.MetadataPair{Name: "commit_sha", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"}, resource.MetadataPair{Name: "target_commit", Value: "f28085a4a8f744da83411f5e09fd7b1709149eee"},
resource.MetadataPair{Name: "draft", Value: "true"}, resource.MetadataPair{Name: "draft", Value: "true"},
)) ))
}) })
@@ -500,7 +500,7 @@ var _ = Describe("In Command", func() {
It("does not create the tag and version files", func() { It("does not create the tag and version files", func() {
Ω(path.Join(destDir, "tag")).ShouldNot(BeAnExistingFile()) Ω(path.Join(destDir, "tag")).ShouldNot(BeAnExistingFile())
Ω(path.Join(destDir, "version")).ShouldNot(BeAnExistingFile()) Ω(path.Join(destDir, "version")).ShouldNot(BeAnExistingFile())
Ω(path.Join(destDir, "commit_sha")).ShouldNot(BeAnExistingFile()) Ω(path.Join(destDir, "target_commit")).ShouldNot(BeAnExistingFile())
}) })
}) })

View File

@@ -2,7 +2,7 @@ package resource
import "github.com/google/go-github/github" import "github.com/google/go-github/github"
func metadataFromRelease(release *github.RepositoryRelease) []MetadataPair { func metadataFromRelease(release *github.RepositoryRelease, commitSHA string) []MetadataPair {
metadata := []MetadataPair{} metadata := []MetadataPair{}
if release.Name != nil { if release.Name != nil {
@@ -40,6 +40,13 @@ func metadataFromRelease(release *github.RepositoryRelease) []MetadataPair {
}) })
} }
if commitSHA != "" {
metadata = append(metadata, MetadataPair{
Name: "target_commit",
Value: commitSHA,
})
}
if *release.Draft { if *release.Draft {
metadata = append(metadata, MetadataPair{ metadata = append(metadata, MetadataPair{
Name: "draft", Name: "draft",

View File

@@ -145,7 +145,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
return OutResponse{ return OutResponse{
Version: versionFromRelease(release), Version: versionFromRelease(release),
Metadata: metadataFromRelease(release), Metadata: metadataFromRelease(release, ""),
}, nil }, nil
} }