40 lines
697 B
Go
40 lines
697 B
Go
package resource
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
)
|
|
|
|
var defaultTagFilter = "^v?([^v].*)"
|
|
|
|
type versionParser struct {
|
|
re *regexp.Regexp
|
|
}
|
|
|
|
func newVersionParser(filter string) (versionParser, error) {
|
|
if filter == "" {
|
|
filter = defaultTagFilter
|
|
}
|
|
re, err := regexp.Compile(filter)
|
|
if err != nil {
|
|
return versionParser{}, err
|
|
}
|
|
return versionParser{re: re}, nil
|
|
}
|
|
|
|
func (vp *versionParser) parse(tag string) string {
|
|
matches := vp.re.FindStringSubmatch(tag)
|
|
if len(matches) > 0 {
|
|
return matches[len(matches)-1]
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func versionFromRelease(release *gitea.Release) Version {
|
|
return Version{
|
|
Tag: release.TagName,
|
|
CommitSHA: release.Target,
|
|
}
|
|
}
|