Apple 已開源 Pkl 程式語言,旨在定義配置並推廣「配置即程式碼」模型。 Pkl 相關的工具包採用 Kotlin 編寫,並根據 Apache 授權發布。用於處理 Pkl 程式碼的插件已準備好用於 IntelliJ、Visual Studio Code 和 Neovim 開發環境。預計 LSP(語言伺服器協定)處理程序即將發布。
Pkl 兼具易於理解的聲明式語言的特性和通用語言的高階功能。該語言支援類型註釋、類別、函數、計算表達式、條件和循環。 Pkl 既可以產生 JSON、YAML 和 XML 等不同格式的靜態配置,也可以建立模組,用於處理各種程式語言應用程式中指定的配置格式。
已為 Java、Kotlin、Go 和 Swift 準備了用於將 Pkl 整合到應用程式中的綁定。此外,還單獨提供了一個用於與 Spring 框架整合的模組。綁定允許基於 Pkl 語言中的配置,建立帶有類別的現成套件和模組,以便在應用程式中使用所述配置。具有配置描述的套件可以發佈到儲存庫中,並作為依賴項導入,從而允許在不同專案之間共用使用 Pkl 程式碼。
該語言提供了靈活的方法來定義條件並檢查值的正確性,使您能夠在最終配置應用於應用程式之前檢測出其中的錯誤。例如,您可以定義可接受的值範圍(“port: Int(this > 1000)”或“age: Int(isBetween(0, 130))”)、強製或可選填充以及格式(“zipCode: String(matches(Regex("\\d{5}")))”)。如果指派的值與條件不匹配,驗證器將顯示錯誤(例如,當嘗試將值 1001 指派給定義為「Int(this > 1000)」的參數時)。
例如,在 Pkl 語言中,您可以使用 DBMS 連線設定範本編寫 Application.pkl 模組:module Application hostname: String port: UInt16 environment: Environment database: Data class Database { basename: String password: String host: String port: 16 «dev»|»qa»|»prod»
接下來,您可以直接建立一個設定文件,使用該模組來檢查值的正確性:修改“Application.pkl” hostname =“localhost” port = 3599 environment =“dev” database { host =“localhost” port = 5786 username =“admin” passORD = read“Name”Img =“admin” password ”
並且還編寫了一個生成器來自動更改四個不同 DBMS 的連接埠號碼: import "Application.pkl" hidden db: Application.Database = new { host = "localhost" username = "admin" password = read("env:DATABASE_PASSWORDORD") Name = "A ORD」, Name, n 0)) { (db) { port = 1 + offset } } }
如有需要,您可以以其他格式匯出配置,例如 YAML:sidecars:—使用者名稱:admin 密碼:hunter2 主機:localhost 連接埠:6000 dbName:myapp —使用者名稱:admin 密碼:hunter2 主機:localhost 連接埠:6001 dbName:myhosthost — 使用者名稱:2aapp —使用者名稱:admin 密碼:hunter6002 主機:localhost 連接埠:2 dbName:myapp
Pkl 配置模式也可以轉換為類別或結構體,以便嵌入到應用程式程式碼中。例如,你可以為 Kotlin 產生一個綁定: import kotlin.Int import kotlin.Long import kotlin.String data class Application( val hostname: String, val port: Int, val environment: Environment, val data: Database host: String, val port: Int, val dbName: String ) enum class Environment( val value: String ) { DEV(«dev»), QA(«qa»), PROD(«prod»); override fun toString() = value } }
來源: opennet.ru
