フィアルとディレクトリ管理

リモートのファイルとフォルダーを扱うための簡単なAPIを提供するモジュールです。

fabric.contrib.files.append(filename, text, use_sudo=False, partial=False, escape=True, shell=False)

文字列(もしくは文字列のリスト)の textfilename に付加します。

リストが与えられた場合、その中の各文字列は(与えられた順に)独立して扱われます。

filename 内に text が見つかれば、付加は実行されず、すぐにはなにも返りません。代わりに与えられた filename の後ろに与えられたテキストが付加されます。例えば echo '$text' >> $filename 経由です。

全行マッチのデフォルトのテキストがあるかどうかのテストで、例えば、 ^<text>$ では “ファイルに行を付加する” ユースケースのもっとも理にかなったアプローチでしょう。

text がシングルクォートで囲まれているので、シングルクォートは透過的にバックスラッシュでエスケープされます。これは escape=False で無効にすることができます。

use_sudo が True なら、run の代わりに sudo を利用します。

shell 引き数は最終的には run/sudo に渡されます。詳細は ~fabric.contrib.sed の同じ引き数の説明をご覧ください。

バージョン 0.9.1 で変更: partial キーワード引き数を追加しました。

バージョン 1.0 で変更: このモジュールの他の関数と一致させるため filenametext の順番を入れ替え。

バージョン 1.0 で変更: partial のデフォルト値を False に変更しました。

バージョン 1.4 で変更: さまざまな細かいケースの試行と解決のためのエスケープに関する正規表現のアップデート。

バージョン 1.6 で追加: shell キーワード引き数を追加しました。

fabric.contrib.files.comment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)

regex にマッチする filename 内のすべての行をコメントアウトします。

デフォルトのコメント文字は # で、これは char 引き数によって上書き可能です。

この機能は sed の機能を利用していて、 sed と同じく use_sudoshellbackup のキーワード引き数を取ります。

comment は行のはじめにコメント文字を追加します。その結果は次のようになります:

this line is uncommented
#this line is commented
#   this line is indented and commented

言い換えると、コメント文字は手動で挿入するとしばしばインデントの次に置かれてしまいますが、これはインデントには追随しません。それに続くスペースも、例えば char='# ' のように明示しない限り付加されません。

ノート

コメントアウトされた行を保護するため、この機能はパラメータ内の regex 引き数をラップするので、自分でそれをする必要はありません。先頭/末尾のすべての ^ もしくは $ 文字は丸括弧の外に確実に正しく移動されます。例えば、 comment(filename, r'^foo$')r'^(foo)$' の正規表現 “前” の sed の呼び出しとなります(そして当然、その正規表現の “後” は r'#\1' となります)。

バージョン 1.5 で追加: shell キーワード引き数を追加しました。

fabric.contrib.files.contains(filename, text, exact=False, use_sudo=False, escape=True, shell=False)

filenametext (正規表現も可能)を含んでいれば True となります。

デフォルトでは、この関数は部分的な行マッチとして振る舞います(例えば、 text がその行の一部でしかない場合)。 exact=True を指定するとこの挙動を変更することができ、 text とまったく同じものを含んでいる行だけが返り値として True を返します。

この関数はリモート側の egrep を活用し(したがってPythonの正規表現シンタックスには完全にはそっていないかもしれません)、デフォルトの env.shell ラッパーをスキップします。

use_sudo が True なら、run の代わりに sudo を利用します。

escape が False の場合、エスケープ関連の追加の正規表現は実行されません(これは exact のオーバーライドも含んでいるので ^/$ は追加されません)。

shell 引き数は最終的には run/sudo に渡されます。詳細は ~fabric.contrib.sed の同じ引き数の説明をご覧ください。

バージョン 1.0 で変更: このモジュールの他の関数と一致させるため filenametext の順番を入れ替え。

バージョン 1.4 で変更: さまざまな細かいケースの試行と解決のためのエスケープに関する正規表現のアップデート。

バージョン 1.4 で変更: escape キーワード引き数を追加しました。

バージョン 1.6 で追加: shell キーワード引き数を追加しました。

fabric.contrib.files.exists(path, use_sudo=False, verbose=False)

カレントのリモートホストに与えられたパスが存在すれば True を返します。

use_sudo が True なら、run の代わりに sudo を利用します。

exists は、出力の乱雑さを避けるため、デフォルトではすべての出力(run行、標準出力、標準エラー出力を含むファイルが存在しないことによるすべての警告)を隠します。この挙動は verbose=True を指定することで変更することができます。

fabric.contrib.files.first(*args, **kwargs)

一つもしくは複数のパスが渡され、最初に見つかったものを返します。なにも存在しなければ None を返します。exists に渡される use_sudoverbose を指定することも可能です。

与えられたパスがカレントのリモートホストのシムリンクなら True を返します。

use_sudo が True なら、run の代わりに sudo を利用します。

デフォルトでは、is_link はすべての出力を隠します。これを変更するには verbose=True を与えてください。

fabric.contrib.files.sed(filename, before, after, limit='', use_sudo=False, backup='.bak', flags='', shell=False)

与えられた正規表現パターンで filename への置換を実行します。

sed -i<backup> -r -e "/<limit>/ s/<before>/<after>/<flags>g" <filename> と同等です。backup に空文字列をセットするとバックアップファイルの生成が無効になります。

利便性のため、beforeafter ではフォワードスラッシュ、シングルクォート、丸括弧は自動的にエスケープされます。つまり、例えば http:\/\/foo\.com のように指定する必要はなく、代わりに http://foo\.com でかまわないということです。

use_sudo が True なら、run の代わりに sudo を利用します。

この shell 引き数は最終的には run/sudo に渡されます。引用符とバックスラッシュでたくさんネストされるという問題を避けるため、デフォルトではこれは False になっています。しかし、これを True にセットすれば、明確に、もしくは暗黙的に sudo 呼び出しをラップするための``~fabric.operations.cd`` の利用に役立つでしょう(cd はもともとシェルにビルトインされているもので独立したコマンドではありません。したがってこれはシェル内で呼び出されるべきです)。

他のオプションは sed 互換の正規表現フラグとともに指定することが可能です。例えば、大文字と小文字を区別しない置換を行うには flags="i" を指定します。g フラグは常に指定されているため、このパラメータをオーバーライドするときにこれを含めることを思い出す必要はありません。

バージョン 1.1 で追加: flags パラメータ。

バージョン 1.6 で追加: shell キーワード引き数を追加しました。

fabric.contrib.files.uncomment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)

regex にマッチする filename 内のすべての行を非コメント化します。

デフォルトのコメントデリミタは # で、これは char 引き数によって上書き可能です。

この機能は sed の機能を利用していて、 sed と同じく use_sudoshellbackup のキーワード引き数を取ります。

uncomment はコメント文字に続く単一の空白文字があればそれを取り除きますが、その前の空白文字は保持します。例えば、# foofoo (単一の空白文字が取り除かれています)になりますが、 `` # foo`` は `` foo`` となります(単一の空白文字は取り除かれていますが先頭の4個の空白文字はそのままです)。

バージョン 1.6 で変更: shell キーワード引き数を追加しました。

fabric.contrib.files.upload_template(filename, destination, context=None, use_jinja=False, template_dir=None, use_sudo=False, backup=True, mirror_local_mode=False, mode=None, pty=None)

テンプレートテキストファイルをレンダリングしてリモートホストにアップロードします。

put への内部呼び出しの結果を返します。詳細はこのドキュメントをご覧ください。

filename はテキストファイルへのパスでなくてはなりません。Pythonの文字列補完フォーマット を含むことができ、(もしあれば) 与えられたコンテキストディクショナリ context とともにレンダリングされます。

または、use_jinja が True にセットされていて Jinja2 テンプレートライブラリが利用可能であれば、その代わりに Jinja テンプレートのレンダリングに利用されます。テンプレートは、デフォルトでは実行ユーザーのカレントワーキングディレクトリから、もしくは template_dir が与えられればそこから読み込まれます。

結果的にレンダリングされたファイルはリモートの destination ファイルパスにアップロードされます。目的場所のファイルがすでに存在する場合は、 backup=False が指定されていなければ .bak 拡張子が付加されてリネームされます。

デフォルトではログインしているユーザーとしてそのファイルが destination にコピーされます。 sudo を利用するには use_sudo=True を指定してください。

mirror_local_modemode のキーワード引き数は内部の put に直接渡されます。詳細はそれぞれのドキュメントをご覧ください。

The pty kwarg will be passed verbatim to any internal run/sudo calls, such as those used for testing directory-ness, making backups, etc.

バージョン 1.1 で変更: backupmirror_local_modemode のキーワード引き数を追加。

バージョン 1.9 で変更: Added the pty kwarg.