A GitHub-profil automatizálása README

A GitHub új profiloldali README szolgáltatása személyiséget hoz a fejlesztői internet Myspace oldalaira.

Bár a Markdown a legjobban megfelel a szokásos statikus szöveges tartalomnak, ez nem akadályozza meg a kreatív embereket abban, hogy egy következő szintű README-t hozzanak létre. Felvehet GIF-eket és képeket mozgás és pizazz hozzáadására (a GitHub Flavor Markdown foglalkozik velük), de egy kicsit dinamikusabbra gondolok.

Mivel a GitHub-profil elülső és középső része, a README nagyszerű lehetőség arra, hogy az emberek megismerjék, miről szól, mit tart fontosnak, és bemutassa munkája néhány kiemelt eseményét.

Érdemes megmutatni legújabb tárházait, tweeteit vagy blogbejegyzéseit. A naprakészen tartásnak sem kell fájdalmat okoznia a folyamatos kézbesítési eszközöknek, például a GitHub Actionsnak köszönhetően.

A jelenlegi README naponta frissül egy linkkel a legújabb blogbejegyzésemhez. Így építettem fel egy README.mdönfrissítést a Go és a GitHub műveletekkel.

Fájlok olvasása és írása a Go segítségével

Nagyon sok Python-t írtam az utóbbi időben, de néhány dologhoz nagyon szeretek használni a Go-t. Mondhatni, hogy ez az én nyelvem az épp funcprojektekhez. Sajnálom. Nem tudtam megállítani magam.

A README.md létrehozásához statikus tartalmat fogok szerezni egy meglévő fájlból, összekeverem néhány új dinamikus tartalommal, amelyet a Go segítségével generálunk, majd 400 fokban sütöm az egészet, amíg valami félelmetes nem jelenik meg .

Így olvashatjuk el az úgynevezett fájlt, static.mdés stringformába öntjük:

// 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) 

A dinamikus tartalom lehetőségeit csak a fantáziád korlátozza! Itt használom a github.com/mmcdole/gofeedcsomagot, hogy elolvassam az RSS-hírcsatornát a blogomból, és megkapom a legújabb bejegyzést.

fp := gofeed.NewParser() feed, err := fp.ParseURL("//victoria.dev/index.xml") if err != nil { log.Fatalf("error getting feed: %v", err) } // Get the freshest item rssItem := feed.Items[0] 

Ahhoz, hogy ezeket a biteket összekapcsoljuk és szálkás jóságot fmt.Sprintf()hozzunk létre, formázott karakterláncot hozunk létre.

// Whisk together static and dynamic content until stiff peaks form blog := "Read my latest blog post: **[" + rssItem.Title + "](" + rssItem.Link + ")**" data := fmt.Sprintf("%s\n%s\n", stringyContent, blog) 

Ezután egy új fájl létrehozásához ebből a keverékből használjuk os.Create(). Több dolgot kell tudni a halasztásról file.Close(), de itt nem kell belemennünk ezekbe a részletekbe. Hozzáadjuk file.Sync(), hogy a README-t megírják.

// 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() 

Itt tekintheti meg a teljes kódot a README adattáramban.

Mmmm, nem jó illata van? ? GitHub Action segítségével valósítsuk meg ezt a mindennapokban.

A Go program ütemezés szerinti futtatása az Actions segítségével

Létrehozhat egy GitHub Action munkafolyamatot, amely kiváltja mind a masterfióktelepet, mind a napi ütemezést. Itt van egy szelet, .github/workflows/update.yamlamely ezt meghatározza:

on: push: branches: - master schedule: - cron: '0 11 * * *' 

A README újjáépítő Go program futtatásához először a fájljaink másolatára van szükség. Erre használjuk actions/checkout:

steps: - name: ?️ Get working copy uses: actions/[email protected] with: fetch-depth: 1 

Ez a lépés futtatja a Go programunkat:

- name: ? Shake & bake README run: | cd ${GITHUB_WORKSPACE}/update/ go run main.go 

Végül visszaszorítjuk a frissített fájlokat a tárunkba. További információ a Változók és titkok használata munkafolyamatban című részben bemutatott változókról.

- 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 //${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git 

Tekintse meg a művelet munkafolyamatának teljes kódját itt, a README adattáramban.

Menj előre, és frissítsd automatikusan a README-t

Gratulálunk és üdvözlünk a klassz gyerekklubban! Most már tudja, hogyan készítsen egy automatikusan frissülő GitHub-profilt a README-ről. Most előkerülhet, és mindenféle ügyes dinamikus elemet felvehet az oldalára - egyszerűen megy a GIF-ekkel, jó?