lip pkg migrate
把目前目錄中 lip v0.x 的 tooth.json 移轉為 lip.toml。
概要
text
lip pkg migrate [-h | --help]說明
lip pkg migrate 根據目前工作目錄中的 tooth.json 轉換出一個套件檔,寫為那裡的 lip.toml,然後刪除 tooth.json。請在套件儲存庫的根目錄中執行它。
下列情況下它失敗,並且不做任何變更:
lip.toml已經存在;tooth.json不存在;或者tooth.json不是 lip 能讀取的格式版本 1、2 或 3。
轉換的內容:
tooth變為id。version和info照抄;info.avatar_url以https://開頭時變為info.logo,否則丟棄。- 每個標籤變為一個變體。對它適用的每個平臺(RID),該標籤下的變體按 lip v0.37.0 的方式合併:合併後相依
github.com/LiteLDev/LeviLamina#client時得到一個客戶端條目,相依github.com/LiteLDev/LeviLamina的其他變體時得到一個服務端條目,不相依 LeviLamina 時每個執行端各得到一個條目。 - 每個條目的轉換方式與 lip 讀取早期格式的
tooth.json相同:dependencies變為deps;資源保留type和urls,其placements變為place;preserve_files變為preserve;remove_files變為purge;指令碼變為hooks。在lip.toml中無效的放置規則和模式會被略去。 - 如果某個平臺合併後的變體含有
tar、tgz或uncompressed類型的資源,該平臺不會得到條目:lip.toml沒有這些資源類型。 - 模板會保留。像
https://example.com/v{{version}}/tool.zip這樣的值(格式 1 和 2 中是$(version))會寫成同樣的模板,其中{{tooth}}(格式 1 和 2 中是$(path))改名為{{id}}。在lip.toml中會渲染成另一個值的模板,則寫成它渲染後的值。
詢問
lip.toml 沒有平臺模式:每個條目只指明一個平臺。當結果需要的某個值缺失或無效時,lip 會在終端機上詢問,直到回答有效為止。它會詢問:
win-*這類模式所代表的平臺(RID);- 不是 RID 的
platform(如windows/amd64)所代表的平臺; - 沒有
platform的變體適用於哪些平臺;以及 - 不是有效範圍的相依範圍。
標準輸入或標準錯誤不是終端機時,命令會失敗,指出它本來要詢問的值,並且不做任何變更。
警告
所有被丟棄的內容,以及轉換後含義有變的內容,都會以警告的形式輸出,並指明它來自哪個欄位(按格式 3 的寫法)。警告不會讓命令失敗。
轉換結果只是一個起點。發佈之前請檢查它;移轉套件列出了需要檢查的地方。
lip pkg migrate 不是工作區操作。
選項
| 選項 | 說明 |
|---|---|
-h、--help | 輸出幫助並結束。 |
輸出
lip pkg migrate 沒有結果:它不向標準輸出寫任何內容。提問、警告和最後一行都是寫到標準錯誤的消息。
結束狀態
| 結束代碼 | 含義 |
|---|---|
0 | lip.toml 已寫入,tooth.json 已刪除,無論有沒有警告。 |
非 0 | 用法錯誤;lip.toml 已存在;tooth.json 不存在或無法讀取;或 lip 無法詢問它需要的值。沒有任何變更。 |
示例
shell
cd MyTool
lip pkg migrate