Use templates
This commit is contained in:
parent
bbfc5ec7f6
commit
f49f2c15d6
6 changed files with 63 additions and 26 deletions
|
@ -86,9 +86,6 @@ func (self *Config) Parse() error {
|
||||||
// environment & config
|
// environment & config
|
||||||
// viper.SetEnvPrefix("")
|
// viper.SetEnvPrefix("")
|
||||||
|
|
||||||
fmt.Printf("all: %#v\n", viper.AllSettings())
|
|
||||||
fmt.Printf("email-from %s\n", viper.Get("email-from"))
|
|
||||||
|
|
||||||
if err := self.Parser.Execute(); err != nil {
|
if err := self.Parser.Execute(); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
@ -62,7 +62,6 @@ func encodeRFC2047(text string) string {
|
||||||
func (email *EmailCtx) SetHeaders(config EmailConfig) {
|
func (email *EmailCtx) SetHeaders(config EmailConfig) {
|
||||||
email.Headers["Return-Path"] = config.From
|
email.Headers["Return-Path"] = config.From
|
||||||
email.Headers["From"] = config.From
|
email.Headers["From"] = config.From
|
||||||
fmt.Printf("config.To %#v\n", config.To)
|
|
||||||
if len(config.To) < 1 {
|
if len(config.To) < 1 {
|
||||||
errmsg := "EMAIL_TO must contain at least one value"
|
errmsg := "EMAIL_TO must contain at least one value"
|
||||||
log.Panic(errors.New(errmsg))
|
log.Panic(errors.New(errmsg))
|
||||||
|
|
|
@ -10,7 +10,6 @@ func main() {
|
||||||
// Setup config
|
// Setup config
|
||||||
config := NewConfig()
|
config := NewConfig()
|
||||||
config.Parse()
|
config.Parse()
|
||||||
fmt.Printf("%#v\n", config)
|
|
||||||
|
|
||||||
// Get task list as markdown
|
// Get task list as markdown
|
||||||
trelloCtx := NewTrello(config.TrelloToken)
|
trelloCtx := NewTrello(config.TrelloToken)
|
||||||
|
|
|
@ -5,11 +5,11 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/adlio/trello"
|
"github.com/adlio/trello"
|
||||||
"github.com/russross/blackfriday/v2"
|
"github.com/russross/blackfriday/v2"
|
||||||
// "gopkg.in/russross/blackfriday.v2"
|
|
||||||
"log"
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
|
"text/template"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -87,36 +87,76 @@ func (ctx *TrelloCtx) GetBoard(boardUrl string) TrelloBoard {
|
||||||
return TrelloBoard{Ctx: ctx, Ptr: board, Name: board.Name}
|
return TrelloBoard{Ctx: ctx, Ptr: board, Name: board.Name}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (board *TrelloBoard) ExportToMarkdown() string {
|
type CardData struct {
|
||||||
var markdown bytes.Buffer
|
Name string
|
||||||
var text string
|
Url string
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListData struct {
|
||||||
|
Name string
|
||||||
|
Cards []CardData
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoardData struct {
|
||||||
|
Name string
|
||||||
|
Url string
|
||||||
|
Lists []ListData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (board *TrelloBoard) ExportData() BoardData {
|
||||||
|
var boardData = BoardData{
|
||||||
|
Name: board.Ptr.Name,
|
||||||
|
Url: board.Ptr.ShortUrl,
|
||||||
|
Lists: make([]ListData, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
// get lists
|
||||||
lists, err := board.Ptr.GetLists(trello.Defaults())
|
lists, err := board.Ptr.GetLists(trello.Defaults())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
text = fmt.Sprintf("# Board %s\n\n", board.Ptr.Name)
|
// fill in reverse order
|
||||||
markdown.WriteString(text)
|
|
||||||
|
|
||||||
text = fmt.Sprintf("URL: %s\n", board.Ptr.ShortUrl)
|
|
||||||
markdown.WriteString(text)
|
|
||||||
|
|
||||||
for listIdx := len(lists) - 1; listIdx >= 0; listIdx -= 1 {
|
for listIdx := len(lists) - 1; listIdx >= 0; listIdx -= 1 {
|
||||||
list := lists[listIdx]
|
list := lists[listIdx]
|
||||||
text := fmt.Sprintf("\n## %s\n\n", list.Name)
|
listData := ListData{
|
||||||
markdown.WriteString(text)
|
Name: list.Name,
|
||||||
|
Cards: make([]CardData, 0),
|
||||||
|
}
|
||||||
|
|
||||||
cards, err := list.GetCards(trello.Defaults())
|
cards, err := list.GetCards(trello.Defaults())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
for _, card := range cards {
|
for _, card := range cards {
|
||||||
text := fmt.Sprintf("* %s ([link](%s))\n", card.Name, card.Url)
|
cardData := CardData{
|
||||||
markdown.WriteString(text)
|
Name: card.Name,
|
||||||
|
Url: card.Url,
|
||||||
}
|
}
|
||||||
|
listData.Cards = append(listData.Cards, cardData)
|
||||||
}
|
}
|
||||||
return markdown.String()
|
|
||||||
|
boardData.Lists = append(boardData.Lists, listData)
|
||||||
|
}
|
||||||
|
|
||||||
|
return boardData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (board *TrelloBoard) ExportToMarkdown() string {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
|
||||||
|
data := board.ExportData()
|
||||||
|
|
||||||
|
t, err := template.ParseFiles("templates/markdown.tmpl")
|
||||||
|
if err != nil {
|
||||||
|
log.Panic("Unable to parse template files")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := t.Execute(&buf, data); err != nil {
|
||||||
|
log.Panicf("Template execution: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (board *TrelloBoard) ExportToHtml() string {
|
func (board *TrelloBoard) ExportToHtml() string {
|
||||||
|
@ -124,9 +164,3 @@ func (board *TrelloBoard) ExportToHtml() string {
|
||||||
html := blackfriday.Run([]byte(markdown))
|
html := blackfriday.Run([]byte(markdown))
|
||||||
return string(html)
|
return string(html)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
func RunTaskell(boardUrl string) {
|
|
||||||
cmd := fmt.Sprintf("taskell -t %s -", boardUrl)
|
|
||||||
markdown := strings.TrimSpace(runcmd(cmd))
|
|
||||||
}*/
|
|
||||||
|
|
0
templates/html.tmpl
Normal file
0
templates/html.tmpl
Normal file
8
templates/markdown.tmpl
Normal file
8
templates/markdown.tmpl
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# Board {{ .Name }}
|
||||||
|
|
||||||
|
{{ range .Lists }}{{ if .Cards }}
|
||||||
|
## {{ .Name }}
|
||||||
|
|
||||||
|
{{ range .Cards }}* {{ .Name }} ([link]({{.Url}}))
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}{{ end }}
|
Loading…
Reference in a new issue