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 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
|
||||||
|
}
|
||||||
|
@@ -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())
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -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",
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user