檢視原始碼 Mix.Shell 行為 (Mix v1.16.2)

定義 Mix.Shell 合約。

摘要

呼叫

執行給定的命令並傳回其退出狀態。

執行給定的命令並傳回其退出狀態。

將給定的 ANSI 錯誤列印至 shell。

將給定的 ANSI 訊息列印至 shell。

如果尚未列印目前的應用程式,則將其列印至 shell。

提示使用者輸入。

提示使用者確認。

提示使用者確認。

函式

將給定的 command 作為 shell 命令執行,並呼叫 callback 以取得串流回應。

傳回可列印的應用程式名稱。

呼叫

@callback cmd(command :: String.t()) :: integer()

執行給定的命令並傳回其退出狀態。

使用選項為空的 cmd/2 的捷徑。

@callback cmd(command :: String.t(), options :: keyword()) :: integer()

執行給定的命令並傳回其退出狀態。

選項

此呼叫應支援下列選項

  • :print_app - 若為 false,則當命令輸出某些內容時,不會列印應用程式名稱

  • :stderr_to_stdout - 若為 false,則不會將 stderr 重新導向至 stdout

  • :quiet - 若為 true,則不會列印命令輸出

  • :env - 執行命令的環境選項

  • :cd - (自 v1.11.0 起) 執行命令的目錄

所有內建 shell 都支援這些選項。

@callback error(message :: IO.ANSI.ansidata()) :: :ok

將給定的 ANSI 錯誤列印至 shell。

@callback info(message :: IO.ANSI.ansidata()) :: :ok

將給定的 ANSI 訊息列印至 shell。

@callback print_app() :: :ok

如果尚未列印目前的應用程式,則將其列印至 shell。

@callback prompt(message :: binary()) :: binary()

提示使用者輸入。

@callback yes?(message :: binary()) :: boolean()

提示使用者確認。

使用空選項的 yes?/2 的捷徑。

@callback yes?(message :: binary(), options :: keyword()) :: boolean()

提示使用者確認。

選項

  • :default - :yes:no (預設為 :yes)

函式

連結至這個函式

cmd(command, options \\ [], callback)

檢視原始碼
@spec cmd(String.t(), keyword(), (binary() -> term())) ::
  exit_status :: non_neg_integer()

將給定的 command 作為 shell 命令執行,並呼叫 callback 以取得串流回應。

這通常由 shell 實作使用,但也可以直接呼叫。

callback 取用命令的輸出資料。其回傳值會被忽略。

選項

  • :cd - (自 v1.11.0 起) 執行命令的目錄

  • :stderr_to_stdout - 將 stderr 重新導向至 stdout,預設為 true

  • :env - 環境變數清單,預設為 []

  • :quiet - 覆寫 callback 為 no-op

@spec printable_app_name() :: atom() | nil

傳回可列印的應用程式名稱。

此函式會回傳目前的應用程式名稱,但僅限於應該列印應用程式名稱時。

呼叫此函式會自動將其值切換為 false,直到重新進入目前的專案。目標是避免多次列印應用程式名稱。