Add implementation, rename to target_commit
This commit is contained in:
@@ -32,6 +32,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
|
||||
}
|
||||
|
||||
var foundRelease *github.RepositoryRelease
|
||||
var commitSHA string
|
||||
|
||||
if 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
|
||||
}
|
||||
|
||||
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 != "" {
|
||||
body := *foundRelease.Body
|
||||
bodyPath := filepath.Join(destDir, "body")
|
||||
@@ -133,7 +141,7 @@ func (c *InCommand) Run(destDir string, request InRequest) (InResponse, error) {
|
||||
|
||||
return InResponse{
|
||||
Version: versionFromRelease(foundRelease),
|
||||
Metadata: metadataFromRelease(foundRelease),
|
||||
Metadata: metadataFromRelease(foundRelease, commitSHA),
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -182,3 +190,19 @@ func (c *InCommand) downloadFile(url, destPath string) error {
|
||||
|
||||
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
|
||||
}
|
||||
|
@@ -142,7 +142,7 @@ var _ = Describe("In Command", func() {
|
||||
resource.MetadataPair{Name: "name", Value: "release-name", URL: "http://google.com"},
|
||||
resource.MetadataPair{Name: "body", Value: "*markdown*", Markdown: true},
|
||||
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())
|
||||
Ω(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())
|
||||
Ω(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: "body", Value: "*markdown*", Markdown: true},
|
||||
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: "body", Value: "*markdown*", Markdown: true},
|
||||
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"},
|
||||
))
|
||||
})
|
||||
@@ -500,7 +500,7 @@ var _ = Describe("In Command", func() {
|
||||
It("does not create the tag and version files", func() {
|
||||
Ω(path.Join(destDir, "tag")).ShouldNot(BeAnExistingFile())
|
||||
Ω(path.Join(destDir, "version")).ShouldNot(BeAnExistingFile())
|
||||
Ω(path.Join(destDir, "commit_sha")).ShouldNot(BeAnExistingFile())
|
||||
Ω(path.Join(destDir, "target_commit")).ShouldNot(BeAnExistingFile())
|
||||
})
|
||||
})
|
||||
|
||||
|
@@ -2,7 +2,7 @@ package resource
|
||||
|
||||
import "github.com/google/go-github/github"
|
||||
|
||||
func metadataFromRelease(release *github.RepositoryRelease) []MetadataPair {
|
||||
func metadataFromRelease(release *github.RepositoryRelease, commitSHA string) []MetadataPair {
|
||||
metadata := []MetadataPair{}
|
||||
|
||||
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 {
|
||||
metadata = append(metadata, MetadataPair{
|
||||
Name: "draft",
|
||||
|
@@ -145,7 +145,7 @@ func (c *OutCommand) Run(sourceDir string, request OutRequest) (OutResponse, err
|
||||
|
||||
return OutResponse{
|
||||
Version: versionFromRelease(release),
|
||||
Metadata: metadataFromRelease(release),
|
||||
Metadata: metadataFromRelease(release, ""),
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user