// Unwrap Markdown content
content, err := ioutil.ReadFile("static.md")
if err != nil {
log.Fatalf("cannot read file: %v", err)
return err
}
// Make it a string
stringyContent := string(content)
As possibilidades do seu conteúdo dinâmico são limitadas apenas pela sua imaginação! Aqui, eu vou usar o github.com/mmcdole/gofeed pacote para ler o feed RSS do meu blog e obter a publicação mais recente.
fp := gofeed.NewParser()
feed, err := fp.ParseURL("https://victoria.dev/index.xml")
if err != nil {
log.Fatalf("error getting feed: %v", err)
}
// Get the freshest item
rssItem := feed.Items[0]
Para unir esses bits e produzir bondade, usamos fmt.Sprintf() para criar uma string formatada.
// Whisk together static and dynamic content until stiff peaks form
blog := "Read my latest blog post: **[" + rssItem.Title + "](" + rssItem.Link + ")**"
data := fmt.Sprintf("%sn%sn", stringyContent, blog)
Em seguida, para criar um novo arquivo a partir desse mix, usamos os.Create(). tem mais coisas para saber sobre o adiamento file.Close(), mas não precisamos entrar nesses detalhes aqui. Vamos adicionar file.Sync() para garantir que nosso README seja gravado.
// Prepare file with a light coating of os
file, err := os.Create("README.md")
if err != nil {
return err
}
defer file.Close()
// Bake at n bytes per second until golden brown
_, err = io.WriteString(file, data)
if err != nil {
return err
}
return file.Sync()
Ver o código completo aqui no meu repositório README.
Mmmm, isso não cheira bem? Make Vamos fazer isso acontecer diariamente com uma ação do GitHub.
Executando seu programa Go em uma programação com Ações
Você pode criar um fluxo de trabalho GitHub Action que gatilhos tanto em um impulso para o seu master filial, bem como em uma programação diária. Aqui está uma fatia do .github/workflows/update.yaml que define isso:
on:
push:
branches:
- master
schedule:
- cron: '0 11 * * *'
Para executar o programa Go que reconstrói nosso README, primeiro precisamos de uma cópia dos nossos arquivos. Nós usamos actions/checkout por isso:
steps:
- name: 🍽️ Get working copy
uses: actions/checkout@master
with:
fetch-depth: 1
Esta etapa executa nosso programa Go:
- name: 🍳 Shake & bake README
run: |
cd ${GITHUB_WORKSPACE}/update/
go run main.go
Finalmente, enviamos os arquivos atualizados de volta ao nosso repositório. Saiba mais sobre as variáveis mostradas em Usando variáveis e segredos em um fluxo de trabalho.
- name: 🚀 Deploy
run: |
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git add .
git commit -am "Update dynamic content"
git push --all -f https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git
Visualizar o código completo deste fluxo de trabalho Ação aqui no meu repositório README.
Vá em frente e atualize automaticamente seu README
Parabéns e bem-vindo ao clube infantil legal! Agora você sabe como criar um perfil README do GitHub com atualização automática. Agora você pode ir em frente e adicionar todos os tipos de elementos dinâmicos à sua página – vá com calma aos GIFs, ok?
