mirror of
https://github.com/Luzifer/repo-template.git
synced 2024-11-14 02:12:44 +00:00
43 lines
1,003 B
Go
43 lines
1,003 B
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/flosch/pongo2"
|
|
"github.com/google/go-github/github"
|
|
"github.com/gosimple/slug"
|
|
)
|
|
|
|
func init() {
|
|
pongo2.RegisterFilter("has_topic", tplRepoHasTopic)
|
|
pongo2.RegisterFilter("groovy_save", tplGroovyFileSave)
|
|
pongo2.RegisterFilter("slugify", tplSlugify)
|
|
}
|
|
|
|
func tplSlugify(in, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {
|
|
return pongo2.AsValue(slug.Make(in.String())), nil
|
|
}
|
|
|
|
func tplGroovyFileSave(in, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {
|
|
return pongo2.AsValue(strings.Replace(in.String(), "-", "_", -1)), nil
|
|
}
|
|
|
|
func tplRepoHasTopic(in, param *pongo2.Value) (*pongo2.Value, *pongo2.Error) {
|
|
repo, ok := in.Interface().(*github.Repository)
|
|
if !ok {
|
|
return nil, &pongo2.Error{
|
|
Sender: "filter:has_topic",
|
|
ErrorMsg: "Input was no github.Repository",
|
|
}
|
|
}
|
|
|
|
topic := param.String()
|
|
|
|
for _, t := range repo.Topics {
|
|
if t == topic {
|
|
return pongo2.AsValue(true), nil
|
|
}
|
|
}
|
|
|
|
return pongo2.AsValue(false), nil
|
|
}
|