跳到正文
本頁目錄

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 沒有結果:它不向標準輸出寫任何內容。提問、警告和最後一行都是寫到標準錯誤的消息。

結束狀態

結束代碼含義
0lip.toml 已寫入,tooth.json 已刪除,無論有沒有警告。
非 0用法錯誤;lip.toml 已存在;tooth.json 不存在或無法讀取;或 lip 無法詢問它需要的值。沒有任何變更。

示例

shell
cd MyTool
lip pkg migrate

另請參閱