{"contents":"package git\n\nimport (\n\t\"strings\"\n\n\t\"github.com/go-git/go-git/v5/plumbing\"\n)\n\n// Tag represents a git tag.\ntype Tag struct {\n\tName string `json:\"name\"`\n\tHash string `json:\"hash\"`\n}\n\n// Tags returns all tags in the repo.\nfunc (repo *Repo) Tags() ([]Tag, error) {\n\titer, err := repo.r.References()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer iter.Close()\n\n\tvar tags []Tag\n\terr = iter.ForEach(func(ref *plumbing.Reference) error {\n\t\tif !ref.Name().IsTag() {\n\t\t\treturn nil\n\t\t}\n\t\tname := strings.TrimPrefix(string(ref.Name()), \"refs/tags/\")\n\t\ttags = append(tags, Tag{\n\t\t\tName: name,\n\t\t\tHash: ref.Hash().String(),\n\t\t})\n\t\treturn nil\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn tags, nil\n}\n","path":"git/tag.go","ref":"main"}