Simplifies init process and adds github issue publishing
This commit is contained in:
parent
21c18b3095
commit
be543e2cc4
23 changed files with 581 additions and 390 deletions
|
@ -1,19 +1,35 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
type ConfigJira struct {
|
||||
Url string `json:"url"`
|
||||
Username string `json:"username"`
|
||||
Token string `json:"token"`
|
||||
Project string `json:"project"`
|
||||
Epic string `json:"epic"`
|
||||
IssueType string `json:"issue_type"`
|
||||
}
|
||||
|
||||
type ConfigGithub struct {
|
||||
Token string `json:"token"`
|
||||
Repo string `json:"repo"`
|
||||
Labels []string `json:"labels"`
|
||||
}
|
||||
|
||||
// ToDo: add key-value extra params as a map to allow for customfield_whatever = team
|
||||
type Campaign struct {
|
||||
Url string `json:"url"`
|
||||
Project string `json:"project"`
|
||||
Epic string `json:"epic"`
|
||||
IssueType string `json:"issue_type"`
|
||||
Summary string `json:"summary"`
|
||||
Template string `json:"template"`
|
||||
Tickets []*Ticket `json:"tickets,omitempty"`
|
||||
Jira ConfigJira `json:"jira"`
|
||||
Github ConfigGithub `json:"github"`
|
||||
Summary string `json:"summary"`
|
||||
Template string `json:"template"`
|
||||
Tickets []*Ticket `json:"tickets,omitempty"`
|
||||
}
|
||||
|
||||
func (c *Campaign) NextJiraUnpublishedTicket() *Ticket {
|
||||
|
@ -27,7 +43,7 @@ func (c *Campaign) NextJiraUnpublishedTicket() *Ticket {
|
|||
|
||||
func (c *Campaign) NextGithubUnpublishedTicket() *Ticket {
|
||||
for _, ticket := range c.Tickets {
|
||||
if ticket.JiraLink != "" && ticket.GithubLink != 0 {
|
||||
if ticket.JiraLink != "" && ticket.GithubLink == 0 {
|
||||
return ticket
|
||||
}
|
||||
}
|
||||
|
@ -35,14 +51,50 @@ func (c *Campaign) NextGithubUnpublishedTicket() *Ticket {
|
|||
}
|
||||
|
||||
func (c *Campaign) PrintStatus(w io.Writer) {
|
||||
fmt.Fprintf(w, "Url: %s\n", c.Url)
|
||||
fmt.Fprintf(w, "Project: %s\n", c.Project)
|
||||
fmt.Fprintf(w, "Epic: %s\n", c.Epic)
|
||||
fmt.Fprintf(w, "Issue Type: %s\n", c.IssueType)
|
||||
fmt.Fprintf(w, "JIRA URL: %s\n", c.Jira.Url)
|
||||
fmt.Fprintf(w, "JIRA Project: %s\n", c.Jira.Project)
|
||||
fmt.Fprintf(w, "JIRA Epic: %s\n", c.Jira.Epic)
|
||||
fmt.Fprintf(w, "JIRA Issue Type: %s\n", c.Jira.IssueType)
|
||||
fmt.Fprintf(w, "GitHub Repo: %s\n", c.Github.Repo)
|
||||
fmt.Fprintf(w, "GitHub Labels: %s\n", c.Github.Labels)
|
||||
fmt.Fprintf(w, "Summary: %s\n", c.Summary)
|
||||
fmt.Fprintf(w, "Template: %s\n", c.Template)
|
||||
fmt.Fprintln(w, "")
|
||||
|
||||
for _, ticket := range c.Tickets {
|
||||
ticket.PrintStatus(w)
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Campaign) FillTicket(t *Ticket) error {
|
||||
summaryTmpl, err := template.New("").Parse(c.Summary)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var summaryBytes bytes.Buffer
|
||||
if err := summaryTmpl.Execute(&summaryBytes, t.Data); err != nil {
|
||||
return err
|
||||
}
|
||||
t.Summary = summaryBytes.String()
|
||||
|
||||
descriptionTemplate, err := template.ParseFiles(c.Template)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
var descriptionBytes bytes.Buffer
|
||||
if err := descriptionTemplate.Execute(&descriptionBytes, t.Data); err != nil {
|
||||
return err
|
||||
}
|
||||
t.Description = descriptionBytes.String()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Campaign) RepoComponents() (string, string) {
|
||||
parts := strings.Split(c.Github.Repo, "/")
|
||||
if len(parts) == 2 {
|
||||
return parts[0], parts[1]
|
||||
}
|
||||
return "", ""
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
package model
|
||||
|
||||
type Config struct {
|
||||
GithubToken string `json:"github_token"`
|
||||
JiraUsername string `json:"jira_username"`
|
||||
JiraToken string `json:"jira_token"`
|
||||
}
|
|
@ -6,10 +6,13 @@ import (
|
|||
)
|
||||
|
||||
type Ticket struct {
|
||||
GithubLink int64 `json:"githubLink,omitempty"`
|
||||
JiraLink string `json:"jiraLink,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Data map[string]interface{} `json:"data,omitempty"`
|
||||
GithubLink int64 `json:"github_link,omitempty"`
|
||||
GithubStatus string `json:"github_status,omitempty"`
|
||||
JiraLink string `json:"jira_link,omitempty"`
|
||||
JiraStatus string `json:"jira_status,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Description string `json:"description,omitempty"`
|
||||
Data map[string]interface{} `json:"data,omitempty"`
|
||||
}
|
||||
|
||||
func RemoveDuplicateTickets(tickets []*Ticket, fileOnly bool) []*Ticket {
|
||||
|
@ -33,5 +36,7 @@ func RemoveDuplicateTickets(tickets []*Ticket, fileOnly bool) []*Ticket {
|
|||
}
|
||||
|
||||
func (t *Ticket) PrintStatus(w io.Writer) {
|
||||
fmt.Fprintf(w, " [%s] %s\n", t.JiraLink, t.Summary)
|
||||
if t.Summary != "" {
|
||||
fmt.Fprintf(w, "[%s] %s\n", t.JiraLink, t.Summary)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue