從科特林腳本編寫到 Python

https://dev.to/nfrankel/from-kotlin-scripting-to-python-8la

GitHub 提供了一種自定義個人資料的方式,允許在特定存儲庫內創建一個 README,以個人資料的方式命名,例如 nfrankel/nfrankel。幾年前,我自動化更新了我的 GitHub 個人資料,包括最新的部落格文章、即將舉行的演講和最新的 YouTube 影片。當時,我選擇了 Kotlin 腳本,因為我對 Kotlin 比較熟悉,但想學習腳本部分。然而,多年後,我對這個解決方案越來越不滿意,最近我將它從 Kotlin 腳本轉移到了 Python。

在原有情況下,我是 Kotlin 的忠實支持者,但問題出在其他地方。當我開發代碼時,我有種感覺,覺得 Kotlin 腳本像是被忽視的一個寶寶。文件對此有相當清楚的說明,指出 Kotlin 腳本是實驗性的,可能隨時被移除或更改。起初我並未太在意,認為這只是暫時的。問題是,這個狀態在兩年多的時間裡都沒有改變。某一刻,一個實驗要麼被確立下來,要麼產品會被淘汰。但 Kotlin 腳本卻一直處於不確定的狀態,既不是真正被使用,也不是真正被廢棄。

Kotlin 腳本允許在檔案註釋中進行依賴註釋。例如以下是對 Freemarker 模板引擎的依賴:

@file:DependsOn(“org.freemarker:freemarker:2.3.32”)

Dependabot 和 Renovate 是可以定期檢查依賴更新的機器人。Renovate 管理比 Dependabot 更多的生態系統,例如 Docker Compose,但仍然無法處理 Kotlin 腳本。這是個惡性循環,因為由於使用 Kotlin 腳本的人不多,它並未得到相應的支援;而同時它又無法獲得支援,因此使用它的人就更少。這導致我不得不定期自行檢查依賴。

我的設置中的最後一個問題完全與 Kotlin 腳本無關,這也是我改變的原因所在。我將腳本放在了魔術 GitHub 存儲庫內。因此,GitHub 的歷史紀錄包含了日常 README 提交以及依賴升級和我的修改。

現在我的代碼所在的存儲庫和原有的個人資料存儲庫是不同的。我現在擁有兩個存儲庫:

nfrankel:README 的目標存儲庫

nfrankel-update:存放腳本的存儲庫

這解決了我以前提到的最後一個問題。

我選擇了 Python,因為在過去幾年裡我用它處理了一些簡單的定時任務,而且對結果比較滿意。一個簡單的搜索幫我找到了以下依賴:

requests 用於發送 HTTP 請求

PyYAML 用於解析 YAML 數據

Jinja2 作為模板引擎

我使用 Poetry 進行管理,而 Renovate 管理 Poetry,因此它解決了我最初的問題。

代碼作的事情基本上都是一樣的。它讀取了本部落格的 RSS 訂閱中的文章、基礎部落格存儲庫的演講,以及 YouTube 上的視頻。

在轉換過程中,我遇到一些小問題,但最大的挑戰是提交到其他存儲庫。

大多數 GitHub 行動要麼完全不會觸及該行動所在的存儲庫,要麼只會提交給它自己。在我的情況下,我將腳本和它操作的存儲庫分開了出來。

總結來說,我從 Kotlin 腳本轉到 Python 並解釋了原因。在我的情況下,Python 比 Kotlin 更適合。這將持續到 JetBrains 致力於 Kotlin 腳本。

完整的本文代碼可在以下 GitHub 上找到:

nfrankel/nfrankel-update

進一步參考:

Get started with Kotlin custom scripting

Poetry

Checkout multiple repos (nested)

Automatic token authentication

原始發表時間為 2024 年 3 月 3 日於 A Java Geek。

via DEV Community

March 7, 2024 at 05:14PM

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *