進階外掛程式內部元件

本頁面的適用對象為想深入瞭解 FFX 外掛程式系統的開發人員。FFX 是以 argh 速率為基礎建構而成。這個 Cim 參數採用 Google 標準的 CLI 參數。在編譯期間,Aargh 預期必須定義 CLI 參數的結構。因此,這項規則會排除任何執行階段外掛程式系統,因為 Rust 結構在編譯後無法編輯。

這也意味著,任何外掛程式的動態功能都必須在編譯時間之前進行。為達成此目標,FFX 會使用 GN 建構規則,透過提供的外掛程式依附元件產生最終的 argh 結構。您可在這裡查看該程式碼。

外掛程式可存取整個引數結構。例如,設定外掛程式需要存取屬於 ffx_args 程式庫的一部分的「--config」標記:

fx ffx --config "config-test=runtime" config get --name config-test

這表示產生的最終 argh 結構必須提供給這些外掛程式。正因如此,ffx_plugin 範本會產生兩個程式庫:

  • <target_name>_args:包含提供給 CLI 的剖析引數。
  • <target_name>_args_test:包含 _args 程式庫在 args_with_unit_tests 設定為 true 時產生的任何單元測試。

開發人員使用 Rust 屬性調整程式碼時,也會在編譯時間產生一些程式碼。

ffx_command 屬性只會在 <target_name>_args 程式庫中建立下列程式碼:

pub type FfxPluginCommand = <Your Command>;

這提供了這個程式庫中已知的進入點,可供 FFX 使用,同時可讓開發人員任意命名指令。

ffx_plugin 屬性的作用類似。

pub async fn ffx_plugin_impl(<Your methods inputs>) -> Result<()> {
    <Your method name>(<Your parameter names>).await
}