🤑
connpass apiを使ってreadme.mdに予定イベントを書いてみた
コンパスとは「エンジニアをつなぐIT勉強会支援プラットフォーム」
新着イベントをgithubで見れたら楽だなと思ったので、コード書きました。
概要としてはgithub actionを使って1日1回実行。
所属してるグループが開催しているイベントを取得して、
それをREADME.mdに書き込む。そんなプログラムです
goを最近勉強し始めて何か作ってみたいと思っていたのでいい機会でした
テストコード
package main
import (
"log"
"os"
"github.com/conread/markdown"
)
func WriteHorizon(m *markdown.MarkDown, content interface{}, repeat int) {
markh := "-"
m.AddToPage(markh, content, repeat)
}
func WriteTitle(m *markdown.MarkDown, content interface{}, repeat int) {
markt := "#"
m.AddToPage(markt, content, repeat)
}
func main() {
file, err := os.Create("README.md")
if err != nil {
log.Fatal(err)
}
defer file.Close()
m := markdown.NewMarkDown()
m.MDHandleFunc("Test Write Title", 2, WriteTitle)
m.MDHandleFunc("Test Write Horizon", 3, WriteHorizon)
s := m.CompleteMDFile(2)
file.Write([]byte(s))
}
結果
## Test Write Title
--- Test Write Horizon
コード解説
file, err := os.Create("README.md")
if err != nil {
log.Fatal(err)
}
defer file.Close()
m := markdown.NewMarkDown()
func NewMarkDown() *MarkDown {
m := new(MarkDown)
return m
}
ここは説明は要らなそうですね
- README.mdファイル作成
- MarkDown構造を初期化してます
次はMDHandleFunc
にREADMEに書き込みたい内容とm.AddToPageに渡すmarkをどれだけ繰り返すかを表すrepeatをわたし、
第三引数に引数がm *markdown.MarkDown, content interface{}, repeat int
を満たす関数を渡します。
AddToPage()
メソッドでマークと書き込みたい内容を結合した文字列をとMarkDown構造のpageプロパティに追加してます
func WriteHorizon(m *markdown.MarkDown, content interface{}, repeat int) {
markh := "-"
m.AddToPage(markh, content, repeat)
}
func WriteTitle(m *markdown.MarkDown, content interface{}, repeat int) {
markt := "#"
m.AddToPage(markt, content, repeat)
}
m.MDHandleFunc("Test Write Title", 2, WriteTitle)
m.MDHandleFunc("Test Write Horizon", 3, WriteHorizon)
次に、pageに追加した文字列たちを結合します
s := m.CompleteMDFile(2)
最後にREADME.mdファイルに書き込み
file.Write([]byte(s))
例としてコンパスのapiをたたいてREADME.mdに書き込むプログラムを貼っときます
まとめ
正直まだまだ使い勝手悪いのでちょこちょこ編集していきたいと思います。
net/httpのhandlerを参考に書いたのでnet/httpについて勉強するいい機会になりました
Discussion