منصوبے کے بارے میں
RecurSpec ایک ابتدائی مرحلے کا، MIT-لائسنس یافتہ Node.js پیکیج ہے جو کمانڈ لائن ٹولز میں ریکوری پاتھس (recovery paths) کاٹیسٹ کرتا ہے۔ جہاں ایک روایتی ٹیسٹ صرف یہ تصدیق کر سکتا ہے کہ ایرر میسج پرنٹ ہوا ہے، RecurSpec اس بات کی تصدیق کرتا ہے کہ میسج میں تجویز کردہ کمانڈ واقعی مسئلے کو حل کرتی ہے، تاکہ صارفین واقعی مشکل سے نکل سکیں۔
یہ کیسے کام کرتا ہے
ایک ٹیسٹ کیس کو recurspec.yml فائل میں ڈیکلیریٹو طریقے سے بیان کیا جاتا ہے۔ ہر کیس چلانے والی کمانڈ، متوقع ناکامی (مثلاً نان زیرو ایگزٹ کوڈ اور stderr سب اسٹرنگ)، ریکوری ہدایت کا ذریعہ، اور ایک ویریفکیشن سٹیپ بیان کرتا ہے۔ ویریفکیشن اصل کمانڈ کو دوبارہ چلا سکتی ہے اور زیرو ایگزٹ کوڈ کا مطالبہ کر سکتی ہے، تاکہ ٹول اس بات کی تصدیق کرے کہ ریکوری لوپ مکمل ہوا ہے، نہ کہ صرف یہ کہ مشورہ موجود تھا۔
شروعات کرنا
اس پروجیکٹ کے لیے Node.js 22 یا اس سے بعد کے ورژن اور pnpm کی ضرورت ہے۔ اسے ڈویلپمنٹ ڈیپینڈینسی کے طور پر انسٹال کیا جاتا ہے، اور پھر تین بنیادی کمانڈز کے ذریعے استعمال کیا جاتا ہے: ایک init سٹیپ جو ایک اسٹارٹر کنفیگریشن لکھتا ہے جس میں ایک رن ایبل Node.js مثال شامل ہوتی ہے، ایک validate سٹیپ، اور ایک test سٹیپ۔ بنڈل شدہ ڈیمو جان بوجھ کر کامیاب اور خراب ریکوری پاتھس کا ملا جلا مجموعہ پیش کرتا ہے۔
کمانڈ لائن انٹرفیس
CLI میں test، validate، init، explain اور discover کمانڈز موجود ہیں۔ test کمانڈ کیس یا ٹیگ منتخب کرنے، رپورٹ فارمیٹ (human، json، junit یا markdown) منتخب کرنے، ور بوس آؤٹ پٹ، fail-fast رویے، ایک سیڈ (seed)، اور ڈرائی رن کے لیے آپشنز فراہم کرتی ہے۔ ایگزٹ کوڈز کی تعریف تمام کامیاب کیسز کے لیے 0، فیلڈ کنٹریکٹ کے لیے 1، اور کنفیگریشن یا استعمال کی غلطیوں کے لیے 2 کے طور پر کی گئی ہے۔ JSON، JUnit اور Markdown رپورٹرز CI پائپ لائنز اور پل ریکویسٹ کمنٹس کے لیے بنائے گئے ہیں۔ runRecurSpec کے ذریعے ایک پروگرامیٹک API بھی دستیاب ہے۔
یہ کیا پکڑتا ہے
یہ ٹول ایرر میسج اور اس کی ہدایات کے درمیان تضادات کو نشانہ بناتا ہے: ایسی تجویز کردہ کمانڈز جو اب موجود نہیں ہیں، نامکمل ریکوری اقدامات، ایسی کمانڈز جو اصل مسئلہ حل کیے بغیر کامیاب ہو جاتی ہیں، ایسا مشورہ جو مزید غلطی کی طرف لے جاتا ہے، انسٹرکشن لوپس، اور ایسی ہدایات جو مبہم یا غیر محفوظ ہوں۔
ری ٹرائی اور گول ریکوری
دو ریکوری شکلوں کی حمایت کی جاتی ہے۔ retry-style ریکوری میں، رکاوٹ کو دور کرنے سے اصل کمانڈ دوسری کوشش میں کامیاب ہو جاتی ہے۔ goal recovery میں، تجویز کردہ کمانڈ ناکام آپریشن کی مکمل طور پر جگہ لے لیتی ہے، تاکہ صارف کا مقصد پورا ہو جائے، چاہے اصل کمانڈ کو دوبارہ چلانے سے وہ اب بھی ناکام ہی رہے۔ README میں ذکر ہے کہ Cargo کیسز پر کام نے اس فرق کو واضح کیا اور گول بیسڈ ویریفکیشن کی راہ ہموار کی۔
حقیقی دنیا کے ساتھ مطابقت
مطابقت کے suite میں Git، Cargo اور npm سے لیے گئے کیسز شامل ہیں، جن میں Git شناخت کی کمی، برانچ ڈیلیشن، ڈائیورجنٹ پل ایڈوائس، موجودہ Cargo پروجیکٹ ڈائریکٹری، اور npm اسکرپٹ کی کمی جیسی صورتحال شامل ہیں۔ نتائج میں مبہم مشورے (متعدد خصوصی یا مطلوبہ کمانڈز)، گول ریکوری، اور صرف معلوماتی پیغامات شامل ہیں جنہیں درست طور پر نظر انداز کیا جاتا ہے۔ جب suite چلتا ہے تو غائب ٹولز کو چھوڑ دیا جاتا ہے۔
سیفٹی ماڈل
ریکوری کمانڈز کو چلانے سے پہلے پارس اور چیک کیا جاتا ہے۔ شیل چیننگ، ری ڈائریکشن، کمانڈ سبسٹٹیوشن اور معلوم تباہ کن کمانڈز کو ڈیفالٹ طور پر بلاک کیا جاتا ہے، اور ہر کیس ایک الگ عارضی ورک اسپیس میں چلتا ہے۔ README واضح کرتا ہے کہ لوکل بیک اینڈ OS لیول نیٹ ورک سینڈ باکسنگ کو نافذ نہیں کرتا، اس لیے deny-network سیٹنگ ایک کنٹینر بیک اینڈ کے آنے تک صرف مشورتی رہے گی۔
محدودیتیں اور صورتحال
دستاویزات تین حدود کی فہرست دیتے ہیں: لوکل بیک اینڈ میں OS لیول نیٹ ورک آئسولیشن کی کمی، انٹرایکٹو TTY پروگرامز کی ٹیسٹنگ کے دوران اسکرپٹڈ اسٹینڈرڈ ان پٹ کی ضرورت (مکمل PTY سپورٹ مستقبل کا کام ہے)، اور ان ٹولز پر انحصار جو greppable مشورے پرنٹ کرتے ہیں، جہاں مبہم یا غائب مشوروں کی رپورٹ کی جاتی ہے بجائے اس کے کہ ان کا اندازہ لگایا جائے۔ RecurSpec کو ابتدائی مرحلے کے طور پر بیان کیا گیا ہے، اور 1.0 ریلیز سے پہلے کنفیگریشن اور پبلک API دونوں تبدیل ہو سکتے ہیں۔ الگ دستاویزات کنفیگریشن، ایکسٹریکشن، سیفٹی، رپورٹرز اور ڈسکوری کو کور کرتی ہیں۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.