genvid.toolbox.BaseTool

class genvid.toolbox.BaseTool(logname=None, command_option_name='command', **kwargs)

ベースクラス: object

すべてのツールのベース class。

この class は、他のすべてのツールを設定し、基本的な機能を提供します。特に、 main()get_parser() のメソッドの処理を行います。詳細は add_commands()add_command()run_command() を参照してください。

インスタンス化する前は、この class のほとんどの属性は適切に初期化されていないことに注意してください。

NAME = None

このツールのロガー名。子 class (children) で再定義する必要があります。

DESCRIPTION = None

ヘルプパーサーで使用されるツールの説明。子 class (children) で再定義する必要があります。

ENVIRONMENT_VARIABLES = {'VAULT_ADDR', 'BINDIR', 'PYTHON_EXECUTABLE', 'CURDIR', 'GENVID_TOOLBOX_LOGLEVEL', 'GENVID_CLUSTER_ID', 'GENVID_VAULT_TOKEN_ROLES_FOLDER', 'GENVID_VERBOSE_EXCEPTIONS', 'AZURE_STORAGE_ACCOUNT', 'VAULT_KEYS_FILE', 'GENVID_DEFAULT_IP', 'AZURE_RESOURCE_GROUP', 'GENVID_BASTION_URL', 'VAULT_TOKEN_FILE', 'VAULT_TOKEN', 'GENVID_VAULT_POLICIES_FOLDER', 'CONSUL_HTTP_ADDR', 'MSBUILD', 'GENVID_TOOLBOX_LOGFORMAT', 'ROOTDIR', 'HOME', 'GENVID_TOOLBOX_VERSION', 'VAULT_KEYS', 'GENVID_CHECKIP_URL'}

すべてのツールで使用される環境変数。

setdefault() が呼び出されるたびにリストが更新されます。 env()print_env() によって使用されます。

MODE_0600 = 384

ユーザー RW ファイルの権限。

MODE_0644 = 420

ユーザー RW、グループ、読み込みファイルの権限。

MODE_0700 = 448

ユーザー RWX ファイルの権限。

MODE_0755 = 493

ユーザー RWX、グループ、RX ファイルの権限。

RE_VERSION_MATCH = re.compile('(?P<version>(\\d+).(\\d+).(\\d+).(\\d+))')
static setcurdir(path: str)

設定されていない場合 CURDIR を設定する。

static setrootdir(path: str)

設定されていない場合 ROOTDIR を設定する。

static setbasescript(path: str)

CURDIRpath に設定し、親 class が設定されていない場合、 ROOTDIR を設定する。

別のパスに ROOTDIR を設定するには、先に setrootdir を呼び出す必要があります。

static setdefault(name: str, value: str)

まだ設定されていない場合、name という環境変数を value に設定し、その値を返す。

static delenv(name: str)
classmethod merge_dict(source: dict, destination: dict) → dict

2 つの辞書をマージする。

destination は、 source の要素を入れ替えて変更します。 sourcedict が値として含まれている場合、 merge はその値で再帰検索を行います (destinationdict でない場合はエラーになる可能性があります)。

パラメータ:
  • source – ソースの辞書。
  • destination – デスティネーションの辞書。
例外:

ValueError – 元のキーが辞書であり、指定先にすでに辞書ではない値が含まれている場合。

戻り値:

destination

バージョン 1.29.0 で追加.

run(*args, check=True, **kwargs)

args のすべての引数を渡し、 check のデフォルト値を True に設定する subprocess.run() のラッパー。

便宜上、すべての引数は、文字列に変換されます (str を使用)。

バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。

shrun(cmdline: str, shell=True, check=True, **kwargs)

直接 cmdline を渡し、 checkshell のデフォルト値を True に設定する subprocess.run() のラッパー。

バージョン 1.15.0 で変更: スタティックメソッドではなく、メソッド。

pyrun(*args, **kwargs)

現在の python バージョンを使用して python スクリプトを実行する。

以下のコマンドとほぼ同じです。

run("python", *args, **kwargs)

存在する場合のみ、ファイルのリンクを解除。

バージョン 1.12.0 で変更: pathlib.Path も引数として可能になりました。

static rmtree(directory: pathlib.Path, ignore_errors: bool = False, onerror=<staticmethod object>)

shutil.rmtree() と同等だが、Windows のシムリンクを認識する。

    バージョン 1.20.1 で変更:
  • onerror 処理メソッドには、例外を発生させる前に 5 秒間隔で 60 秒間ファイルの削除を再試行するデフォルトのハンドラーが与えられます。

static remove_readonly(func, path, excinfo)

Windows の読み取り専用ファイルの削除を助ける rmtree() のヘルパー。

install_file(src: typing.Union[str, pathlib.Path], dst: typing.Union[str, pathlib.Path], mode=420, uid=-1, gid=-1, backup=False)

ファイル srcdst にコピーして権限を変更する。

パラメータ:
  • src – コピーするファイル。
  • dst – コピー先。
  • mode – コピー先の権限。
  • uid – コピー先のユーザー ID。 -1 の場合、プロセスのユーザー ID を使用する。
  • gid – GID コピー先の GID。 -1 の場合、uid を使用する。
  • backup – ファイル名の末尾に ~ を追加して、ファイルをバックアップする。

バージョン 1.16.0 で変更: 非静的メソッドにして backup の引数を追加する。

install_tmp_file(dest: typing.Union[str, pathlib.Path], data: bytes, **kwargs)

一時ファイルにデータを書き込み、dst にコピーする。

インストールは、 install_file() を使用して行われます。

パラメータ:
  • dest – コンテンツの保存先。
  • data – ファイルに書き込むための書き込みデータ。

バージョン 1.16.0 で変更: 非静的メソッド

install_json(dest: typing.Union[str, pathlib.Path], config, **kwargs)

config を JSON ファイルとしてダンプし、指定の場所にコピーする。

パラメータ:
  • dest – コンテンツの保存先。
  • data – JSON としてファイルに書き込むための書き込みデータ。

バージョン 1.16.0 で変更: 非静的メソッド

static env()

使用されている環境変数とその値のリストを返します。

返される変数のリストは、 ENVIRONMENT_VARIABLES から入手します。

static print_env()

使用されている環境変数とその値のリストを出力する。

返される変数のリストは、 ENVIRONMENT_VARIABLES から入手します。

logger = None

ツールのロガー。

PLATFORM = None

現在のプラットフォームの名前。

現在、linux または windows が使用できます。

HOME = None

ユーザーのホームディレクトリ名を含む HOME のミラー。

環境変数または os.path.expanduser() から取得。

PYTHON_EXECUTABLE = None

デフォルトで現在の python 実行ファイルを含む PYTHON_EXECUTABLE のミラー。

環境から、または、環境が設定されていない場合は sys.executable から取得。

GENVID_BASTION_URL = None

bastion-api URL を表す GENVID_BASTION_URL のミラー。

CURDIR = None

現在のスクリプトディレクトリパス (正しく設定されている場合)、または現在の作業ディレクトリ (デフォルト) を含む CURDIR のミラー。

警告: この変数の信頼性は高くありません。できれば使用しないでください。

GENVID_TOOLBOX_VERSION = None

現在インストールされているツールボックスバージョンを含む GENVID_TOOLBOX_VERSION のミラー。

警告: この変数はオーバーライドしないでください。

GENVID_VERBOSE_EXCEPTIONS = None

GENVID_VERBOSE_EXCEPTIONS のミラー。

値が 1 の場合、完全な例外トレースが表示されます。それ以外の場合、1 行に凝縮されます。

AZURE_STORAGE_ACCOUNT = None

AZURE_STORAGE_ACCOUNT のミラー。アクセスする Azure ストレージアカウント名です。正確な名前は、Azure ポータル を確認してください。

AZURE_RESOURCE_GROUP = None

AZURE_RESOURCE_GROUP のミラー。アクセスする Azure リソースグループ名です。

ROOTDIR = None

プロジェクトのルート、 ROOTDIR のミラー。

BINDIR = None

プロジェクトのバイナリが格納されるフォルダを含む BINDIR のミラー。

ARTIFACTS_DIR = None

この SDK のイメージの保存場所。

バージョン 1.20.0 で変更: DockerTool から変数を移動します。

COMMAND_OPTION_NAME = None

コマンドラインでコマンド引数に使用される名前。

詳細は add_command() を参照してください。

GENVID_TOOLBOX_LOGLEVEL = None

ツールボックスの logger レベルを設定する GENVID_TOOLBOX_LOGLEVEL のミラー。

GENVID_TOOLBOX_LOGFORMAT = None

ツールボックスの logger を設定する GENVID_TOOLBOX_LOGFORMAT のミラー。

GENVID_CLUSTER_ID = None

ツールボックスに使用するクラスタ ID を示す GENVID_CLUSTER_ID のミラー。

commands = None

各コマンドのパーサーの辞書。

詳細は add_command() を参照してください。

subparsers = None

すべてのコマンドに使用する argparse モジュールから入手したサブパーサーオブジェクト。

詳細は add_commands() を参照してください。

parser = None

このツールの現在のパーサー。

詳細は add_commands() を参照してください。

which(exe, path=None)

exe で実行される実行ファイルのフルパスを返す。

path に含まれている場合、チェックに使用する。含まれていない場合、 BINDIR を先にチェックする。

Raises:ファイルが存在しない場合、 ExecutableNotInPathError
run_powershell(*cmds: str, interactive: bool = False, noprofile: bool = False, **kwargs)

powershell スクリプトとして cmds を実行する。

パラメータ:
  • cmds – 実行する powershell コマンドのリスト。
  • interactive – コマンドがインタラクティブかどうか。
  • noprofile – プロフィールを読み込まない。
  • kwargs – この run() のパーサーに渡すその他のキーワード引数。
run_elevated_win32(*args, **kwargs)

Windows の高度の権限を使用してコマンドを実行します。

run_elevated(*args, **kwargs)

Windows の高度の権限を使用してコマンドを実行します。

KILL_SIGNAL = 1

デフォルト キル信号。

デフォルト signal.SIGKILL (UNIX)、 signal.CTRL_BREAK_EVENT (Windows)。

バージョン 1.15.0 で追加.

send_signal(proc: typing.Union[int, psutil.Process], sig: int = None)

プロセスにシグナルを送信する。

パラメータ:
  • proc – プロセス。プロセス PID または psutil.Process のインスタンス。
  • sig – 送信するシグナル。デフォルトは KILL_SIGNAL

バージョン 1.15.0 で追加.

kill_process(proc: typing.Union[int, psutil.Process])

プロセスを破棄する。

SIGKILL を送信してプロセスを強制的に破棄したり、TerminateProcess を呼び出す。

パラメータ:proc – プロセス。プロセス PID または psutil.Process のインスタンス。

バージョン 1.15.0 で追加.

kill_process_tree(proc: typing.Union[int, psutil.Process], timeout: float = 15.0) → typing.List[psutil.Process]

最初に SIGTERM/CTRL_BREAK_EVENT を送信し、その後すべての子に SIGKILL/Terminate をプッシュしてプロセスツリーを破棄する。

パラメータ:
  • proc – プロセス。プロセス PID または psutil.Process のインスタンス。
  • timeout – プロセス終了までの待機時間のタイムアウト (秒)。
戻り値:

生存しているプロセスのリスト。

バージョン 1.15.0 で追加.

    バージョン 1.20.1 で変更:
  • デフォルトのタイムアウト時間を 15 秒に変更。

  • 子の子は、再帰的に終了するようになりました。

run_daemon(*args: str, **kwargs)

バックグラウンドで処理を実行する。

パラメータ:
  • args – 実行するコマンド。
  • stdout – stdout の出力ファイル。
  • stderr – stderr の出力ファイル。
  • cwd – 現在の作業ディレクトリ。
  • env – 使用する環境。
  • pidfile – プロセスの PID を保存する pidfile。
add_commands()

ツールのコマンドを追加。

このメソッドはオーバーライドする必要があります。子 class が add_commands() を使用して新しいコマンドを追加することができます。既存コマンドのリストおよび、そのパーサーは commands で入手可能です。

add_command(name: str, description: str, **kwargs)

ツールに新しいコマンドを追加。

コマンドが commands のリストに追加されます。

パラメータ:
  • name – コマンド名。
  • description – コマンドのヘルプ。
  • kwargs – ツール subparsers のパーサーに渡すその他のキーワード引数。
戻り値:

コマンドパーサー。

Raises:

AssertionError (名前がすでにコマンドとして存在する場合)。

add_base_commands()
run_base_command(command, options)
get_parser(subparsers=None, name=None, description=None, fromfile_prefix_chars='@', **kwargs)

このツールのパーサーを返します。

パラメータ:
  • subparsers – 使用するカスタムサブパーサー。
  • name – ツール名 (デフォルトは NAME)。
  • description – ツールの説明 (デフォルトは DESCRIPTION)。
  • fromfile_prefix_chars – ファイルにプレフィックスをつける文字セットで、追加の引数はここから読み込みます。
  • kwargs – この argparse.ArgumentParser ファクトリのパーサーに渡すその他のキーワード引数。
戻り値:

このツールのパーサー。

バージョン 1.13.0 で変更: fromfile_prefix_chars の新しいデフォルトは 『@』です。None を渡すことで、以前の動作 (None) に切り替えます。

run_command(command, options)

optionscommand を実行する。

このメソッドはオーバーライドする必要があります。

パラメータ:
  • command – 実行するコマンド名。
  • options – 引き渡すオプションを持つ argparse.Namespace オブジェクト。
main(options=None, *, profile=None)

ツールを実行する。

options を指定していない場合、コマンドライン引数より取得。それ以外の場合は、名前空間オブジェクトまたは辞書。

パラメータ:profile – プロフィールが使用されている場合のプロフィールインスタンス。
get_files(srcdir: pathlib.Path)

srcdir 配下の全ファイルを取得 (フォルダを除く)。

Srcdir.rglob(「*」) と等価だが、フォルダは除外。

パラメータ:srcdir – 新しいファイルをチェックするフォルダ。
戻り値:Path オブジェクトの反復子。
copy_files(srcdir: pathlib.Path, dstdir: pathlib.Path, files: typing.List[typing.Union[str, pathlib.Path]], dryrun=False)

files の全ファイルを srcdir から dstdir にコピーします。

パラメータ:
  • srcdir – オリジナル ファイルの基本フォルダ。
  • dstdir – ファイルのコピー先フォルダ。
  • files – コピーするファイルのリスト。
  • dryrun – True ならコピーせずに結果のみログ出力。
safe_print(text: str, fileobj=<colorama.ansitowin32.StreamWrapper object>, errors='backslashreplace')

値を fileobj へ安全に出力します。

fileobj には encoding メンバーおよびバイトを受け取る write メソッドを持つ buffer メンバーも必要です。

パラメータ:
  • text – 出力するテキスト。
  • fileobj – 出力する fileobj。
  • errors – エラー処理方法。取り得る値については str.encode() を参照してください。
class basetool.BaseTool

genvid.toolbox.BaseTool の実装