উত্তর:
ফ্যাব্রিক 2 টাস্ক আর্গুমেন্ট ডকুমেন্টেশন:
http://docs.pyinvoke.org/en/latest/concepts/invoking-tasks.html#task-command-line-arguments
ফ্যাব্রিক 1.X কার্যগুলিতে আর্গুমেন্টগুলি পাস করার জন্য নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:
fab task:'hello world'
fab task:something='hello'
fab task:foo=99,bar=True
fab task:foo,bar
আপনি এ সম্পর্কে ফ্যাব্রিক ডক্সে আরও পড়তে পারেন ।
hello world
প্রয়োজনীয় বলে মনে হচ্ছে?
world
ছিল এবং এটি ছিল একটি নতুন কাজ।
'hello world'
একটি পাইথন স্ট্রিং স্থাপিত হবে 'hello world'
, কিন্তু "hello world"
স্থাপিত হবে hello world
(যা সম্ভবত অধিকাংশ মানুষ যা চান তা হবে)।
bar=True
ফ্যাব্রিক কমান্ডটি পাস হবে bar='True'
যা বুলিয়ান মান নয়
ফ্যাব্রিক আর্গুমেন্টগুলি খুব বেসিক স্ট্রিং পার্সিংয়ের সাহায্যে বোঝা যায়, তাই আপনি কীভাবে এটি প্রেরণ করবেন সে সম্পর্কে আপনাকে কিছুটা যত্নবান হতে হবে।
নিম্নলিখিত পরীক্ষার কার্যক্রমে যুক্তিগুলি পাস করার বিভিন্ন উপায়ের কয়েকটি উদাহরণ এখানে রয়েছে:
@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'})
সমীকরণ থেকে শেলটি নিতে আমি এখানে ডাবল উদ্ধৃতি ব্যবহার করি তবে কিছু প্ল্যাটফর্মের জন্য একক উদ্ধৃতি ভাল হতে পারে। অক্ষরগুলির জন্য পলায়নগুলি নোট করুন যা ফ্যাব্রিকটি সীমানা বিবেচনা করে।
ডক্সে আরও বিশদ: http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments
ফ্যাব্রিক 2 এ কেবল আপনার টাস্ক ফাংশনে যুক্তি যুক্ত করুন। উদাহরণস্বরূপ, কার্যকে version
যুক্তিটি পাস করার জন্য deploy
:
@task
def deploy(context, version):
...
এটি নিম্নলিখিত হিসাবে চালান:
fab -H host deploy --version v1.2.3
ফ্যাব্রিক এমনকি অপশনগুলি স্বয়ংক্রিয়ভাবে নথিভুক্ত করে:
$ fab --help deploy
Usage: fab [--core-opts] deploy [--options] [other tasks here ...]
Docstring:
none
Options:
-v STRING, --version=STRING
আপনাকে সমস্ত পাইথন ভেরিয়েবলগুলি স্ট্রিং হিসাবে পাস করতে হবে, বিশেষত যদি আপনি স্ক্রিপ্টগুলি চালনার জন্য উপ-প্রক্রিয়া ব্যবহার করছেন, বা আপনি একটি ত্রুটি পাবেন। আপনাকে ভেরিয়েবলগুলি আলাদাভাবে ইন্ট / বুলিয়ান টাইপগুলিতে রূপান্তর করতে হবে।
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-এ একটি কাজ থেকে অন্য কোনও কাজে পরামিতিগুলি সন্ধান করতে দেখছে তবে কেবল তার জন্য পরিবেশের অভিধানটি ব্যবহার করুন:
@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