外部コマンドの実行に関する処理を集めたユーティリティモジュール.
Copyright (c) 2013-2014 DWANGO Co., Ltd. All Rights Reserved.
argument() = iodata() | integer() | {iodata(), [argument_option(), ...]} | option_element()
外部プログラムに渡す引数.
argument_option() = long_option | equal | escape | float_option()
引数に関するオプション.
command() = iodata_or_atom()
外部プログラムの実行パス.
destination_file_path() = binary()
標準出力/エラー出力の出力先.
float_option() = {decimals, Decimals::0..253} | {scientific, Decimals::0..249} | compact
小数パラメータに関するオプション.
iodata_or_atom() = iodata() | atom()
iodata(), または, atom().
option() = port_settings() | escape_all | {stdout, destination_file_path() | stderr} | {stderr, destination_file_path() | stdout} | discard_stderr | {timeout, time()} | {nice, integer()} | {close_function, fun((port()) -> ok)} | {stdout_hook_fun, {stdout_hook_fun(), term()}} | {open_port_module, module()}
execute/2, execute/3に指定できるオプション.
option_argument() = iodata() | integer() | none
オプションの引数部分.
option_character() = iodata_or_atom()
オプション文字.
option_element() = {option_character(), option_argument()} | {option_character(), option_argument(), [argument_option()]}
外部プログラムに渡す引数の中でオプションとして指定するもの.
port_settings() = term()
open_portに指定できるオプション.
stdout_hook_fun() = fun((binary() | {eol | noeol, binary()}, term()) -> term() | binary()) | fun((exit, term()) -> binary())
標準出力に対するフィルタ関数.
time() = non_neg_integer()
timeoutに指定できる数字.
escape_shell_arg/1 | シングルクォーテーションで両端を囲み、バイナリ中のシングルクォーテーションをエスケープする. |
execute/2 | 外部コマンドを実行する. |
execute/3 | 外部コマンドを実行する. |
generate_command/2 | オプションリストからコマンド文字列(バイナリ)を生成する. |
generate_command/3 | オプションリストからコマンド文字列(バイナリ)を生成する. |
reduce_parameters/1 | パラメータリストを整理する. |
reduce_parameters/2 | パラメータリストを整理する. |
escape_shell_arg(Binary::binary()) -> EscapedBinary::binary()
シングルクォーテーションで両端を囲み、バイナリ中のシングルクォーテーションをエスケープする.
execute(Command::command(), ArgumentList::[argument()]) -> {{ok, Output} | {error, Reason}, FullCommandBinary}
Output = binary()
Reason = term()
FullCommandBinary = binary()
外部コマンドを実行する.
execute(Command::command(), ArgumentList::[argument()], OptionList::[option()]) -> {{ok, Output} | {error, Reason}, FullCommandBinary}
Output = binary()
Reason = timeout | {exit_status, Status}
Status = integer()
FullCommandBinary = binary()
外部コマンドを実行する.
オプション generate_commandのオプション + open_portのオプション
generate_command(Command::command(), ArgumentList::[argument()]) -> binary()
オプションリストからコマンド文字列(バイナリ)を生成する.
generate_command(Command::command(), ArgumentList::[argument()], OptionList::[option()]) -> binary()
オプションリストからコマンド文字列(バイナリ)を生成する.
【argument option】
● long_option
: long optionにする("--"でオプションを指定する.).
● equal
: オプション文字とオプション引数の間を"="で繋ぐ.
● escape
: オプション引数をシングルクォーテーションでエスケープする.
【argument option (小数)】
● {scientific, 0..253}
: 小数を指数表記で出力する.数字は有効桁数.
● {decimals, 0..249}
: 小数を実数表記で出力する.数字は有効桁数.
● compact
: 後端のゼロを省く.
(*) デフォルトは[{decimals, 4}]
(*) 表記方法が複数指定されている場合,最も後に指定された表記方法が採用される.
【option】
● escape_all
: 全てのオプション引数をエスケープする.
● {stdout, Destination}
: 標準出力を指定先のファイルに出力する.
Destinationには出力ファイル先を指定する.
● {stderr, Destination}
: 標準エラー出力を指定先のファイルに出力する.
Destinationには出力ファイル先を指定する.
● discard_stderr
: 標準エラー出力を/dev/nullに捨てる.
● {timeout, Time}
: Time ミリ秒
で処理が終わらなかった場合, タイムアウトする.
● {close_function, Fun}
: timeoutオプションでタイムアウトした時の処理を明示的に指定する.
● {stdout_hook_fun, {Fun, Init}}
: 標準出力をフィルタリングする.
Initに初期値を, Funは2引数の関数で第1引数にexit
が来た場合はbinary
を返す.
● {open_port_module, Module}
: erlang:open_port/2の代わりに, 指定したモジュールのopen_port/2を使用する.
reduce_parameters(Parameters::[any()]) -> ValidParameters::[any()]
パラメータリストを整理する.
パラメータリストから不必要な要素
を除く.
不必要な要素
のdefaultは, undefined
とする.
reduce_parameters(Parameters::[any()], UnnecessaryParameters::[any()]) -> ValidParameters::[any()]
パラメータリストを整理する.
パラメータリストから不必要な要素を除く.