python - ফ্যাব্রিক টাস্ক পাস পরামিতি




fabric (4)

কমান্ড লাইন থেকে "fab" কল করার সময় কিভাবে আমি একটি ফ্যাব্রিক টাস্কের একটি পরামিতি পাস করতে পারি? উদাহরণ স্বরূপ:

def task(something=''):
    print "You said %s" % something
$ fab task "hello"
You said hello

Done.

fabric.operations.prompt দিয়ে fabric.operations.prompt ছাড়াই এটি করা সম্ভব?


আপনাকে স্ট্রিং হিসাবে সমস্ত পাইথন ভেরিয়েবলগুলি পাস করতে হবে, বিশেষত যদি আপনি স্ক্রিপ্টগুলি চালানোর জন্য উপ-প্রক্রিয়া ব্যবহার করছেন, অথবা আপনি একটি ত্রুটি পাবেন। আপনি ভেরিয়েবলগুলিকে আলাদাভাবে int / বুলিয়ান ধরনের রূপান্তর করতে হবে।

def print_this(var):
    print str(var)

fab print_this:'hello world'
fab print_this='hello'
fab print_this:'99'
fab print_this='True'

ফ্যাব্রিক 2 টাস্ক আর্গুমেন্ট ডকুমেন্টেশন:

http://docs.pyinvoke.org/en/latest/concepts/invoking-tasks.html#task-command-line-arguments

ফেব্রিক 1. এক্স কাজগুলিতে আর্গুমেন্ট পাস করার জন্য নিচের সিনট্যাক্স ব্যবহার করে:

 fab task:'hello world'
 fab task:something='hello'
 fab task:foo=99,bar=True
 fab task:foo,bar

আপনি ফ্যাব্রিক ডক্স মধ্যে এটি সম্পর্কে আরও পড়তে পারেন।


ফ্যাব্রিক আর্গুমেন্টগুলি খুব মৌলিক স্ট্রিং পার্সিংয়ের সাথে বোঝা যায়, তাই আপনাকে তাদের কীভাবে পাঠাতে হবে সে সম্পর্কে সতর্কতা অবলম্বন করতে হবে।

নিম্নোক্ত পরীক্ষার ফাংশনে আর্গুমেন্টগুলি পাস করার বিভিন্ন উপায়গুলির কয়েকটি উদাহরণ এখানে দেওয়া হয়েছে:

@task
def test(*args, **kwargs):
    print("args:", args)
    print("named args:", kwargs)
$ fab "test:hello world"
('args:', ('hello world',))
('named args:', {})

$ fab "test:hello,world"
('args:', ('hello', 'world'))
('named args:', {})

$ fab "test:message=hello world"
('args:', ())
('named args:', {'message': 'hello world'})

$ fab "test:message=message \= hello\, world"
('args:', ())
('named args:', {'message': 'message = hello, world'})

আমি সমীকরণের শেলটি নিতে এখানে ডবল উদ্ধৃতি ব্যবহার করি, তবে কিছু প্ল্যাটফর্মের জন্য একক উদ্ধৃতি ভাল হতে পারে। এছাড়াও ফিতে ফ্যাব্রিক delimiters বিবেচনা করে অক্ষর জন্য escapes নোট।

ডক্সগুলিতে আরো বিস্তারিত বিবরণ: http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments


যদি কেউ ফ্যাব্রিক 2-তে এক টাস্ক থেকে অন্যের পরামিতি পাস করতে চায় তবে তার জন্য পরিবেশ অভিধান ব্যবহার করুন:

@task
def qa(ctx):
  ctx.config.run.env['counter'] = 22
  ctx.config.run.env['conn'] = Connection('qa_host')

@task
def sign(ctx):
  print(ctx.config.run.env['counter'])
  conn = ctx.config.run.env['conn']
  conn.run('touch mike_was_here.txt')

এবং চালান:

fab2 qa sign




fabric