Bagaimana cara mengirimkan parameter ke tugas fabric saat memanggil "fab" dari baris perintah? Sebagai contoh:
def task(something=''):
print "You said %s" % something
$ fab task "hello"
You said hello
Done.
Apakah mungkin melakukan ini tanpa disuruh fabric.operations.prompt
?
hello world
tampaknya perlu?world
adalah tugas baru.'hello world'
akan menghasilkan string Python'hello world'
, tetapi"hello world"
akan menghasilkanhello world
(yang mungkin diinginkan kebanyakan orang).bar=True
dalam perintah fabric akan diteruskan sebagaibar='True'
yang bukan nilai booleanArgumen fabric dipahami dengan penguraian string yang sangat dasar, jadi Anda harus sedikit berhati-hati dalam mengirimnya.
Berikut adalah beberapa contoh cara berbeda untuk meneruskan argumen ke fungsi pengujian berikut:
Saya menggunakan kutipan ganda di sini untuk mengeluarkan shell dari persamaan, tetapi tanda kutip tunggal mungkin lebih baik untuk beberapa platform. Perhatikan juga pelarian untuk karakter yang dianggap sebagai pembatas oleh fabric.
Detail lebih lanjut di dokumen: http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments
sumber
Di Fabric 2, cukup tambahkan argumen ke fungsi tugas Anda. Misalnya, untuk meneruskan
version
argumen ke tugasdeploy
:Jalankan sebagai berikut:
Fabric bahkan mendokumentasikan opsi secara otomatis:
sumber
Anda harus meneruskan semua variabel Python sebagai string, terutama jika Anda menggunakan sub-proses untuk menjalankan skrip, atau Anda akan mendapatkan error. Anda perlu mengubah variabel kembali menjadi tipe int / boolean secara terpisah.
sumber
Jika seseorang ingin meneruskan parameter dari satu tugas ke tugas lain di fabric2, cukup gunakan kamus lingkungan untuk itu:
Dan lari:
sumber