Bagaimana Mengautomasikan Profil GitHub Anda BACA

Ciri REITME halaman profil baru GitHub membawa keperibadian ke halaman Myspace Internet pembangun.

Walaupun Markdown memberikan yang terbaik untuk kandungan teks statik standard, itu tidak menghalang orang kreatif daripada bekerja untuk membuat README tahap seterusnya. Anda boleh memasukkan GIF dan gambar untuk menambahkan sedikit gerakan dan pizazz (ia diliputi dalam GitHub Flavour Markdown), tetapi saya memikirkan sesuatu yang sedikit lebih dinamik.

Oleh kerana ia berada di hadapan dan di tengah-tengah profil GitHub anda, README anda adalah peluang terbaik untuk memberi tahu orang tentang perkara anda, perkara yang anda rasa penting, dan untuk mempamerkan beberapa sorotan karya anda.

Anda mungkin ingin memamerkan repositori, tweet, atau catatan blog terkini anda. Mengekalkannya tidak semestinya menyakitkan, berkat alat penyampaian berterusan seperti GitHub Actions.

README semasa saya menyegarkan dirinya setiap hari dengan pautan ke catatan blog terbaru saya. Inilah cara saya membina kemas kini diri README.mddengan tindakan Go dan GitHub.

Membaca dan menulis fail dengan Go

Saya telah banyak menulis Python sejak kebelakangan ini, tetapi untuk beberapa perkara saya sangat suka menggunakan Go. Anda boleh mengatakan bahawa ini adalah bahasa saya untuk funcprojek hanya untuk projek. Maaf. Tidak dapat menahan diri.

Untuk membuat README.md saya, saya akan mendapatkan beberapa kandungan statik dari fail yang ada, menggabungkannya dengan beberapa kandungan dinamik baru yang akan kami hasilkan dengan Go, kemudian bakar semuanya pada 400 darjah sehingga sesuatu yang mengagumkan keluar .

Inilah cara kami membaca dalam fail yang dipanggil static.mddan memasukkannya ke dalam stringbentuk:

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

Kemungkinan untuk kandungan dinamik anda hanya dibatasi oleh imaginasi anda! Di sini, saya akan menggunakan github.com/mmcdole/gofeedpakej untuk membaca suapan RSS dari blog saya dan mendapatkan siaran terbaru.

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] 

Untuk menggabungkan bit ini bersama-sama dan menghasilkan kebaikan fmt.Sprintf()tali , kami gunakan untuk membuat rentetan berformat.

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

Kemudian untuk membuat fail baru dari campuran ini, kami gunakan os.Create(). Terdapat lebih banyak perkara yang perlu diketahui mengenai penangguhan file.Close(), tetapi kami tidak perlu memasukkan butiran tersebut di sini. Kami akan menambah file.Sync()untuk memastikan README kami ditulis.

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

Lihat kod lengkap di sini di repositori README saya.

Mmmm, tidak baunya sedap? ? Mari buat ini berlaku setiap hari dengan Tindakan GitHub.

Menjalankan program Go anda mengikut jadual dengan Actions

Anda boleh membuat aliran kerja GitHub Action yang mencetuskan dorongan ke mastercawangan anda dan juga pada jadual harian. Berikut adalah bahagian .github/workflows/update.yamlyang menentukan ini:

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

Untuk menjalankan program Go yang membina semula README kami, pertama kami memerlukan salinan fail kami. Kami menggunakan actions/checkoutuntuk itu:

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

Langkah ini menjalankan program Go kami:

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

Akhirnya, kami menolak fail yang dikemas kini kembali ke repositori kami. Ketahui lebih lanjut mengenai pemboleh ubah yang ditunjukkan di Menggunakan pemboleh ubah dan rahsia dalam aliran kerja.

- 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 

Lihat kod penuh untuk aliran kerja Tindakan ini di sini di repositori README saya.

Pergi dan kemas kini README anda secara automatik

Tahniah dan selamat datang ke kelab kanak-kanak yang keren! Anda sekarang tahu bagaimana membina profil GitHub yang dikemas kini secara automatik. Anda sekarang boleh keluar dan menambahkan pelbagai elemen dinamik yang kemas ke halaman anda - cukup mudah menggunakan GIF, okey?