Decouple 'commit' object and add commit.link (#51)
* Decouple commit out from build and add commit.link * Fix tests for Commit decouple * Update documentation for Commit decouple
This commit is contained in:
		
							
								
								
									
										30
									
								
								DOCS.md
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								DOCS.md
									
									
									
									
									
								
							| @@ -207,6 +207,24 @@ repo.owner | ||||
| repo.name | ||||
| : repository name | ||||
|  | ||||
| commit.sha | ||||
| : git sha for current commit | ||||
|  | ||||
| commit.branch | ||||
| : git branch for current commit | ||||
|  | ||||
| commit.link | ||||
| : git commit link in remote | ||||
|  | ||||
| commit.author | ||||
| : git author for current commit | ||||
|  | ||||
| commit.email | ||||
| : git author email for current commit | ||||
|  | ||||
| commit.message | ||||
| : git current commit message | ||||
|  | ||||
| build.status | ||||
| : build status type enumeration, either `success` or `failure` | ||||
|  | ||||
| @@ -216,21 +234,9 @@ build.event | ||||
| build.number | ||||
| : build number | ||||
|  | ||||
| build.commit | ||||
| : git sha for current commit | ||||
|  | ||||
| build.branch | ||||
| : git branch for current commit | ||||
|  | ||||
| build.tag | ||||
| : git tag for current commit | ||||
|  | ||||
| build.ref | ||||
| : git ref for current commit | ||||
|  | ||||
| build.author | ||||
| : git author for current commit | ||||
|  | ||||
| build.link | ||||
| : link the the build results in drone | ||||
|  | ||||
|   | ||||
| @@ -81,6 +81,7 @@ docker run --rm \ | ||||
|   -e DRONE_REPO_NAME=go-hello \ | ||||
|   -e DRONE_COMMIT_SHA=e5e82b5eb3737205c25955dcc3dcacc839b7be52 \ | ||||
|   -e DRONE_COMMIT_BRANCH=master \ | ||||
|   -e DRONE_COMMIT_LINK=https://github.com/appleboy/go-hello/compare/master... \ | ||||
|   -e DRONE_COMMIT_AUTHOR=appleboy \ | ||||
|   -e DRONE_COMMIT_AUTHOR_EMAIL=appleboy@gmail.com \ | ||||
|   -e DRONE_BUILD_NUMBER=1 \ | ||||
|   | ||||
							
								
								
									
										18
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								main.go
									
									
									
									
									
								
							| @@ -115,6 +115,11 @@ func main() { | ||||
| 			Usage:  "git commit branch", | ||||
| 			EnvVar: "DRONE_COMMIT_BRANCH", | ||||
| 		}, | ||||
| 		cli.StringFlag{ | ||||
| 			Name:   "commit.link", | ||||
| 			Usage:  "git commit link", | ||||
| 			EnvVar: "DRONE_COMMIT_LINK", | ||||
| 		}, | ||||
| 		cli.StringFlag{ | ||||
| 			Name:   "commit.author", | ||||
| 			Usage:  "git author name", | ||||
| @@ -191,16 +196,19 @@ func run(c *cli.Context) error { | ||||
| 			Owner: c.String("repo.owner"), | ||||
| 			Name:  c.String("repo.name"), | ||||
| 		}, | ||||
| 		Commit: Commit{ | ||||
| 			Sha:     c.String("commit.sha"), | ||||
| 			Branch:  c.String("commit.branch"), | ||||
| 			Link:    c.String("commit.link"), | ||||
| 			Author:  c.String("commit.author"), | ||||
| 			Email:   c.String("commit.author.email"), | ||||
| 			Message: c.String("commit.message"), | ||||
| 		}, | ||||
| 		Build: Build{ | ||||
| 			Tag:      c.String("build.tag"), | ||||
| 			Number:   c.Int("build.number"), | ||||
| 			Event:    c.String("build.event"), | ||||
| 			Status:   c.String("build.status"), | ||||
| 			Commit:   c.String("commit.sha"), | ||||
| 			Branch:   c.String("commit.branch"), | ||||
| 			Author:   c.String("commit.author"), | ||||
| 			Email:    c.String("commit.author.email"), | ||||
| 			Message:  c.String("commit.message"), | ||||
| 			Link:     c.String("build.link"), | ||||
| 			Started:  c.Float64("job.started"), | ||||
| 			Finished: c.Float64("job.finished"), | ||||
|   | ||||
							
								
								
									
										39
									
								
								plugin.go
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								plugin.go
									
									
									
									
									
								
							| @@ -19,16 +19,21 @@ type ( | ||||
| 		Name  string | ||||
| 	} | ||||
|  | ||||
| 	// Commit information. | ||||
| 	Commit struct { | ||||
| 		Sha     string | ||||
| 		Branch  string | ||||
| 		Link    string | ||||
| 		Author  string | ||||
| 		Email   string | ||||
| 		Message string | ||||
| 	} | ||||
|  | ||||
| 	// Build information. | ||||
| 	Build struct { | ||||
| 		Tag      string | ||||
| 		Event    string | ||||
| 		Number   int | ||||
| 		Commit   string | ||||
| 		Message  string | ||||
| 		Branch   string | ||||
| 		Author   string | ||||
| 		Email    string | ||||
| 		Status   string | ||||
| 		Link     string | ||||
| 		Started  float64 | ||||
| @@ -58,6 +63,7 @@ type ( | ||||
| 	// Plugin values. | ||||
| 	Plugin struct { | ||||
| 		Repo   Repo | ||||
| 		Commit Commit | ||||
| 		Build  Build | ||||
| 		Config Config | ||||
| 	} | ||||
| @@ -212,7 +218,7 @@ func (p Plugin) Exec() error { | ||||
| 	if len(p.Config.Message) > 0 { | ||||
| 		message = p.Config.Message | ||||
| 	} else { | ||||
| 		message = p.Message(p.Repo, p.Build) | ||||
| 		message = p.Message(p.Repo, p.Commit, p.Build) | ||||
| 	} | ||||
|  | ||||
| 	bot, err := tgbotapi.NewBotAPI(p.Config.Token) | ||||
| @@ -225,7 +231,7 @@ func (p Plugin) Exec() error { | ||||
|  | ||||
| 	bot.Debug = p.Config.Debug | ||||
|  | ||||
| 	ids := parseTo(p.Config.To, p.Build.Email, p.Config.MatchEmail) | ||||
| 	ids := parseTo(p.Config.To, p.Commit.Email, p.Config.MatchEmail) | ||||
| 	photos := fileExist(trimElement(p.Config.Photo)) | ||||
| 	documents := fileExist(trimElement(p.Config.Document)) | ||||
| 	stickers := fileExist(trimElement(p.Config.Sticker)) | ||||
| @@ -240,10 +246,13 @@ func (p Plugin) Exec() error { | ||||
| 	if p.Config.Format == "markdown" { | ||||
| 		message = escapeMarkdown(message) | ||||
|  | ||||
| 		p.Build.Message = escapeMarkdownOne(p.Build.Message) | ||||
| 		p.Build.Branch = escapeMarkdownOne(p.Build.Branch) | ||||
| 		p.Build.Author = escapeMarkdownOne(p.Build.Author) | ||||
| 		p.Build.Email = escapeMarkdownOne(p.Build.Email) | ||||
| 		p.Commit.Message = escapeMarkdownOne(p.Commit.Message) | ||||
| 		p.Commit.Branch = escapeMarkdownOne(p.Commit.Branch) | ||||
| 		p.Commit.Link = escapeMarkdownOne(p.Commit.Link) | ||||
| 		p.Commit.Author = escapeMarkdownOne(p.Commit.Author) | ||||
| 		p.Commit.Email = escapeMarkdownOne(p.Commit.Email) | ||||
|  | ||||
| 		p.Build.Tag = escapeMarkdownOne(p.Build.Tag) | ||||
| 		p.Build.Link = escapeMarkdownOne(p.Build.Link) | ||||
| 		p.Build.PR = escapeMarkdownOne(p.Build.PR) | ||||
|  | ||||
| @@ -333,12 +342,12 @@ func (p Plugin) Send(bot *tgbotapi.BotAPI, msg tgbotapi.Chattable) { | ||||
| } | ||||
|  | ||||
| // Message is plugin default message. | ||||
| func (p Plugin) Message(repo Repo, build Build) []string { | ||||
| func (p Plugin) Message(repo Repo, commit Commit, build Build) []string { | ||||
| 	return []string{fmt.Sprintf("[%s] <%s> (%s)『%s』by %s", | ||||
| 		build.Status, | ||||
| 		build.Link, | ||||
| 		build.Branch, | ||||
| 		build.Message, | ||||
| 		build.Author, | ||||
| 		commit.Branch, | ||||
| 		commit.Message, | ||||
| 		commit.Author, | ||||
| 	)} | ||||
| } | ||||
|   | ||||
| @@ -33,18 +33,20 @@ func TestDefaultMessageFormat(t *testing.T) { | ||||
| 			Name:  "go-hello", | ||||
| 			Owner: "appleboy", | ||||
| 		}, | ||||
| 		Commit: Commit{ | ||||
| 			Sha:     "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis", | ||||
| 		}, | ||||
| 		Build: Build{ | ||||
| 			Number: 101, | ||||
| 			Status: "success", | ||||
| 			Link:   "https://github.com/appleboy/go-hello", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis", | ||||
| 			Commit:  "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	message := plugin.Message(plugin.Repo, plugin.Build) | ||||
| 	message := plugin.Message(plugin.Repo, plugin.Commit, plugin.Build) | ||||
|  | ||||
| 	assert.Equal(t, []string{"[success] <https://github.com/appleboy/go-hello> (master)『update travis』by Bo-Yi Wu"}, message) | ||||
| } | ||||
| @@ -55,16 +57,18 @@ func TestSendMessage(t *testing.T) { | ||||
| 			Name:  "go-hello", | ||||
| 			Owner: "appleboy", | ||||
| 		}, | ||||
| 		Commit: Commit{ | ||||
| 			Sha:     "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis by drone plugin", | ||||
| 			Email:   "test@gmail.com", | ||||
| 		}, | ||||
| 		Build: Build{ | ||||
| 			Tag:    "1.0.0", | ||||
| 			Number: 101, | ||||
| 			Status: "success", | ||||
| 			Link:   "https://github.com/appleboy/go-hello", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis by drone plugin", | ||||
| 			Commit:  "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 			Email:   "test@gmail.com", | ||||
| 		}, | ||||
|  | ||||
| 		Config: Config{ | ||||
| @@ -103,14 +107,16 @@ func TestBotError(t *testing.T) { | ||||
| 			Name:  "go-hello", | ||||
| 			Owner: "appleboy", | ||||
| 		}, | ||||
| 		Commit: Commit{ | ||||
| 			Sha:     "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis by drone plugin", | ||||
| 		}, | ||||
| 		Build: Build{ | ||||
| 			Number: 101, | ||||
| 			Status: "success", | ||||
| 			Link:   "https://github.com/appleboy/go-hello", | ||||
| 			Author:  "Bo-Yi Wu", | ||||
| 			Branch:  "master", | ||||
| 			Message: "update travis by drone plugin", | ||||
| 			Commit:  "e7c4f0a63ceeb42a39ac7806f7b51f3f0d204fd2", | ||||
| 		}, | ||||
|  | ||||
| 		Config: Config{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user