git-chglog/fields.go
2018-05-05 17:58:41 +09:00

114 lines
2.5 KiB
Go

package chglog
import "time"
// Hash of commit
type Hash struct {
Long string
Short string
}
// Author of commit
type Author struct {
Name string
Email string
Date time.Time
}
// Committer of commit
type Committer struct {
Name string
Email string
Date time.Time
}
// Merge info for commit
type Merge struct {
Ref string
Source string
}
// Revert info for commit
type Revert struct {
Header string
}
// Ref is abstract data related to commit. (e.g. `Issues`, `Pull Request`)
type Ref struct {
Action string // (e.g. `Closes`)
Ref string // (e.g. `123`)
Source string // (e.g. `owner/repository`)
}
// Note of commit
type Note struct {
Title string // (e.g. `BREAKING CHANGE`)
Body string // `Note` content body
}
// NoteGroup is a collection of `Note` grouped by titles
type NoteGroup struct {
Title string
Notes []*Note
}
// Commit data
type Commit struct {
Hash *Hash
Author *Author
Committer *Committer
Merge *Merge // If it is not a merge commit, `nil` is assigned
Revert *Revert // If it is not a revert commit, `nil` is assigned
Refs []*Ref
Notes []*Note
Mentions []string // Name of the user included in the commit header or body
Header string // (e.g. `feat(core): Add new feature`)
Type string // (e.g. `feat`)
Scope string // (e.g. `core`)
Subject string // (e.g. `Add new feature`)
Body string
}
// CommitGroup is a collection of commits grouped according to the `CommitGroupBy` option
type CommitGroup struct {
RawTitle string // Raw title before conversion (e.g. `build`)
Title string // Conversion by `CommitGroupTitleMaps` option, or title converted in title case (e.g. `Build`)
Commits []*Commit
}
// RelateTag is sibling tag data of `Tag`.
// If you give `Tag`, the reference hierarchy will be deepened.
// This struct is used to minimize the hierarchy of references
type RelateTag struct {
Name string
Subject string
Date time.Time
}
// Tag is data of git-tag
type Tag struct {
Name string
Subject string
Date time.Time
Next *RelateTag
Previous *RelateTag
}
// Version is a tag-separeted datset to be included in CHANGELOG
type Version struct {
Tag *Tag
CommitGroups []*CommitGroup
Commits []*Commit
MergeCommits []*Commit
RevertCommits []*Commit
NoteGroups []*NoteGroup
}
// Unreleased is unreleased commit dataset
type Unreleased struct {
CommitGroups []*CommitGroup
Commits []*Commit
MergeCommits []*Commit
RevertCommits []*Commit
NoteGroups []*NoteGroup
}