O novo recurso README da página de perfil do GitHub está trazendo alguma personalidade para as páginas do Myspace da Internet do desenvolvedor.

Embora o Markdown seja o melhor para o conteúdo de texto estático padrão, isso não impede que as pessoas criativas trabalhem para criar um README de nível superior. Você pode incluir GIFs e imagens para adicionar movimento e entusiasmo (eles são abordados Markdown de sabor do GitHub), mas estou pensando em algo um pouco mais dinâmico.

Como fica na frente e no centro do seu perfil do GitHub, o seu README é uma ótima oportunidade para que as pessoas saibam sobre o que você é importante, o que você acha importante e para mostrar alguns destaques do seu trabalho.

Você pode exibir seus repositórios, tweets ou postagens mais recentes. Mantê-lo atualizado também não precisa ser um problema, graças às ferramentas de entrega contínua como o GitHub Actions.

Meu README atual atualiza-se diariamente com um link para meu último post no blog. Aqui está como eu construí uma atualização automática README.md com ações Go e GitHub.

Lendo e gravando arquivos com o Go

Ultimamente tenho escrito muito sobre Python, mas para algumas coisas realmente gosto de usar o Go. Você poderia dizer que é o meu idioma preferido por apenasfunc projetos. Desculpe. Não consegui me parar.

Para criar o meu README.md, vou obter um conteúdo estático de um arquivo existente, misturá-lo com um novo conteúdo dinâmico que geraremos com o Go e depois assar tudo a 400 graus até que algo incrível apareça .

Veja como lemos em um arquivo chamado static.md e colocá-lo string Formato:

// Unwrap Markdown contentcontent, err := ioutil.ReadFile("static.md")if err != nil {    log.Fatalf("cannot read file: %v", err)    return err}// Make it a stringstringyContent := 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 itemrssItem := 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 formblog := "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 osfile, 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?



Fonte