.TH JPM 1 .SH "نام (NAME)" jpm \- مدیر پروژه Janet، ابزاری برای ساخت پروژه‌های Janet .SH "خلاصه دستور (SYNOPSIS)" .B jpm [\fB\-\-flag ...\fR] [\fB\-\-option=value ...\fR] .IR command .IR args ... .SH "توضیحات (DESCRIPTION)" دستور jpm برای ساخت پروژه‌های Janet، نصب وابستگی‌ها، نصب پروژه‌ها، ساخت ماژول‌های بومی (native) و صدور پروژهٔ Janet شما به‌صورت یک فایل اجرایی مستقل به کار می‌رود. اگرچه برای کار با Janet ضروری نیست، اما بسیاری از کارهای تکراری و پیش‌نیاز را هنگام نصب وابستگی‌ها و ساخت ماژول‌های بومی برطرف می‌کند. اجرای jpm تنها به janet نیاز دارد و برای نصب وابستگی‌ها از git استفاده می‌کند (jpm بدون نصب بودن git نیز کار خواهد کرد). .SH "مستندات (DOCUMENTATION)" دستور jpm دارای چندین زیردستور است که هر کدام برای مدیریت یک پروژهٔ منفرد Janet یا تمام ماژول‌های Janet نصب‌شده روی سیستم به کار می‌روند. دستورهای سراسری (global)، که ماژول‌ها را در سطح سیستم مدیریت می‌کنند، کارهایی مانند نصب و حذف بسته‌ها و همچنین پاک‌سازی حافظهٔ پنهان را انجام می‌دهند. دستورهای محلی (local) جالب‌تر و کاربردی‌تر هستند. برای اطلاعات بیشتر در مورد استفاده از jpm، پیوند https://janet-lang.org/docs/index.html را ببینید. برای اطلاعات دربارهٔ پرچم‌ها، مستندات راهنمای درون خود ابزار را ببینید. .SH "دستورها (COMMANDS)" .TP .BR help متن راهنمای استفاده را نمایش داده و بلافاصله خارج می‌شود. .TP .BR build تمام مصنوعات (artifacts) مشخص‌شده در فایل project.janet در دایرکتوری جاری را می‌سازد. مصنوعات در دایرکتوری ./build/ ایجاد خواهند شد. .TP .BR configure [\fBpath\fR] یک دایرکتوری برای ساخت‌های خارج از درخت سورس (out-of-tree) ایجاد کرده و همچنین گزینه‌های پروژه را تنظیم می‌کند. در حالی که jpm نیازی به مرحلهٔ صریح پیکربندی ندارد، این دستور می‌تواند برای جلوگیری از نیاز به تنظیم مکرر گزینه‌های مشابه استفاده شود. ساخت‌های out-of-tree همچنین روش مناسبی برای داشتن چندین پیکربندی به‌طور هم‌زمان هستند، مانند ساخت انتشار (release) و ساخت اشکال‌زدایی (debug). .TP .BR install\ [\fBrepo...\fR] هنگامی که بدون آرگومان اجرا شود، تمام مصنوعات قابل نصب در پروژهٔ جاری را در JANET_MODPATH جاری برای ماژول‌ها و JANET_BINPATH برای برنامه‌های اجرایی و اسکریپت‌ها نصب می‌کند. همچنین می‌تواند یک آدرس اختیاری از مخزن git را دریافت کرده و در عوض، تمام مصنوعات موجود در آن مخزن را نصب کند. هنگامی که با یک آرگومان اجرا شود، نیازی نیست install از داخل دایرکتوری پروژهٔ jpm اجرا گردد. همچنین می‌تواند چندین وابستگی را در قالب یک دستور نصب کند. .TP .BR update-installed تمام بسته‌های نصب‌شده را به آخرین نسخه به‌روزرسانی می‌کند. این کار با نصب مجدد از سیستم کنترل نسخه با آخرین برچسب (tag) موجود برای هر بسته انجام می‌شود. ممکن است بسته‌هایی که با یک برچسب خاص نصب شده‌اند را بازنویسی کند. .TP .BR uninstall\ [\fBname...\fR] پروژه‌ای که با install نصب شده است را حذف می‌کند. دستور uninstall انتظار دریافت نام پروژه را دارد، نه آدرس مخزن، مسیر فایل نصب‌شده یا نام فایل اجرایی. نام پروژه باید در بالای فایل project.janet در بخش declare-project مشخص شده باشد. اگر نامی ارائه نشود، در صورت نصب بودن پروژهٔ جاری، آن را حذف می‌کند. همچنین می‌تواند چندین بسته را در یک دستور حذف نماید. .TP .BR clean تمام مصنوعات ایجاد شده توسط jpm را حذف می‌کند. این دستور تنها پوشهٔ build را حذف می‌کند. .TP .BR test آزمون‌های jpm را اجرا می‌کند. دستور jpm تمام فایل‌های منبع janet موجود در دایرکتوری test را به‌عنوان آزمون اجرا خواهد کرد. اگر یک آزمون با کد خروج غیر صفر خارج شود، ناموفق تلقی می‌شود. .TP .BR deps تمام وابستگی‌های مورد نیاز این پروژه را به‌صورت بازگشتی نصب می‌کند. ابزار jpm مشکلات وابستگی را حل نمی‌کند؛ مانند مواقعی که نسخه‌های متناقضی از یک ماژول لازم است، یا ماژول‌های متفاوتی با نام یکسان وجود دارند. وابستگی‌ها با git نصب می‌شوند، بنابراین deps نیازمند وجود git در PATH است. .TP .BR clear-cache ابزار jpm مخازن git مورد نیاز برای نصب ماژول‌ها از منبع دوردست را در یک حافظهٔ پنهان سراسری ($JANET_PATH/.cache) ذخیره می‌کند. اگر این وابستگی‌ها قدیمی یا بیش از حد حجیم شوند، clear-cache حافظهٔ پنهان را حذف کرده و jpm در صورت نیاز دوباره آن را می‌سازد. دستور clear-cache یک دستور سراسری است، بنابراین نیازی به وجود فایل project.janet نیست. .TP .BR list-installed تمام بسته‌های نصب‌شده در syspath جاری را فهرست می‌کند. .TP .BR list-pkgs\ [\fBsearch\fR] تمام نام‌های مستعار بسته‌ها را در فهرست بستهٔ جاری که حاوی رشتهٔ جستجوی داده‌شده هستند، فهرست می‌کند. اگر رشتهٔ جستجویی داده نشود، کل فهرست را چاپ می‌کند. .TP .BR clear-manifest ابزار jpm یک دایرکتوری مانیفست ایجاد می‌کند که شامل فهرستی از تمام فایل‌های نصب‌شده است. با حذف این دایرکتوری، jpm چنین تصور می‌کند که چیزی نصب نشده است و در زمان اجرای دستورهای jpm deps یا jpm load-lockfile تلاش می‌کند همه چیز را مجدداً نصب کند. در استفاده از این دستور احتیاط کنید، زیرا ممکن است فایل‌های اضافی روی سیستم شما باقی بگذارد و در بیشتر مواقع در یک نصب سالم به آن نیازی نیست. .TP .BR run\ [\fBrule\fR] قاعدهٔ (rule) معینِ تعریف‌شده در project.janet را اجرا می‌کند. فایل‌های تعاریف پروژه (project.janet) معمولاً شامل چند اعلانِ مصنوع هستند که قواعدی را تعیین می‌کنند تا jpm بتواند آن‌ها را حل یا اجرا کند. یک project.janet همچنین می‌تواند مانند make، قواعد سفارشی برای ایجاد فایل‌های دلخواه یا اجرای کدهای دلخواه ایجاد نماید. دستور run یک قاعدهٔ منفرد را اجرا کرده یا یک فایل را می‌سازد. .TP .BR rules تمام قواعدی که می‌توانند از طریق run اجرا شوند را فهرست می‌کند. این دستور برای بررسی قواعد موجود در پروژه مفید است. .TP .BR rule-tree\ [\fBroot\fR]\ [\fBdepth\fR] درخت وابستگی قواعد را با قالبی زیبا نمایش می‌دهد. به‌صورت اختیاری می‌توان یک قاعده را به‌عنوان ریشهٔ درخت و همچنین حداکثر عمق برای چاپ را تعیین کرد. به‌طور پیش‌فرض، درخت کامل را برای تمام قواعد چاپ می‌کند. این خروجی می‌تواند بسیار طولانی باشد، بنابراین پیشنهاد می‌شود یک قاعدهٔ ریشه تعیین کنید. .TP .BR show-paths تمام مسیرهای استفاده‌شده هنگام نصب و ساخت مصنوعات را نمایش می‌دهد. .TP .BR update-pkgs فهرست بسته‌ها را با نصب بستهٔ 'pkgs' به‌روزرسانی می‌کند. معادل با jpm install pkgs است. .TP .BR quickbin\ [\fBentry\fR]\ [\fBexecutable\fR] یک فایل اجرایی مستقل با پیوند ایستا (statically linked) از یک فایل منبع Janet که حاوی تابع main باشد ایجاد می‌کند. تابع main نقطهٔ ورود برنامه است و آرگومان‌های خط فرمان را به‌عنوان آرگومان‌های تابع دریافت می‌کند. فایل ورودی می‌تواند ماژول‌های دیگر، از جمله ماژول‌های بومی C را وارد (import) کند، و jpm تلاش خواهد کرد تا این وابستگی‌ها را در فایل اجرایی تولیدشده بگنجاند. .TP .BR repl یک repl را در همان محیطِ آزمون اجرا می‌کند. به شما اجازه می‌دهد تا بدون نیاز به نصب ماژول‌های بومی ساخته‌شده، از آن‌ها استفاده کنید. .TP .BR debug-repl فایل project.janet جاری را بارگذاری کرده و یک repl در محیط آن آغاز می‌کند. این کار به کاربر امکان می‌دهد فایل پروژه را بهتر اشکال‌زدایی کرده و قواعد را به‌صورت دستی اجرا کند. .TP .BR make-lockfile\ [\fBfilename\fR] یک lockfile ایجاد می‌کند. یک lockfile سندی است که وابستگی‌های نصب‌شده در زمان ایجاد lockfile، از جمله نسخه‌های دقیق را توصیف می‌کند. پس از آن می‌توان از طریق load-lockfile از این فایل برای برپاسازی همان محیط روی یک ماشین دیگر استفاده کرد. به‌طور پیش‌فرض، lockfile در lockfile.jdn ایجاد می‌شود، اگرچه از هر مسیری می‌توان استفاده کرد. .TP .BR load-lockfile\ [\fBfilename\fR] وابستگی‌ها را از یک lockfile که قبلاً با make-lockfile ایجاد شده است، نصب می‌کند. به‌طور پیش‌فرض به دنبال یک lockfile در مسیر lockfile.jdn می‌گردد، هرچند از هر مسیری می‌توان استفاده کرد. .TP .BR new-project\ [\fBname\fR] یک پروژهٔ جدید Janet را به‌صورت تعاملی در دایرکتوری "name" ایجاد می‌کند. .TP .BR new-c-project\ [\fBname\fR] یک پروژهٔ جدید C+Janet را به‌صورت تعاملی در دایرکتوری "name" ایجاد می‌کند. .TP .BR new-exe-project\ [\fBname\fR] یک پروژهٔ جدید برای یک فایل اجرایی به‌صورت تعاملی در دایرکتوری "name" ایجاد می‌کند. .SH "محیط (ENVIRONMENT)" .B JANET_TREE .RS روشی آسان برای تنظیم هم‌زمان modpath ،binpath ،syspath و manpath. این متغیر معادل با پارامتر --tree در jpm است. .RE .B JANET_PATH .RS مکانی برای جستجوی کتابخانه‌های Janet. این تنها متغیر محیطی است که Janet برای یافتن ماژول‌های بومی و کد منبع به آن نیاز دارد. اگر JANET_PATH تنظیم نشده باشد، Janet در مکان پیش‌فرضی که هنگام کامپایل تعیین شده است جستجو می‌کند، که با (dyn :syspath) قابل تشخیص است. .RE .B JANET_MODPATH .RS مکانی که jpm برای نصب کتابخانه‌ها به آن استفاده خواهد کرد. مقدار پیش‌فرض آن JANET_PATH است، اما در صورت تمایل می‌توانید آن را روی دایرکتوری دیگری تنظیم کنید. انجام این کار به شما امکان می‌دهد ماژول‌های Janet را در مسیر عادی سیستم (JANET_PATH یا (dyn :syspath)) وارد کنید، اما آن‌ها را در دایرکتوری دیگری نصب نمایید. همچنین روش قابل اطمینان‌تری برای نصب است. در صورت ارائهٔ گزینهٔ --modpath=/some/path، این متغیر بازنویسی می‌شود. .RE .B JANET_HEADERPATH .RS مکانی که jpm برای یافتن فایل‌های هدر janet (شامل janet.h و janetconf.h) که برای ساخت ماژول‌های بومی و فایل‌های اجرایی مستقل استفاده می‌شوند، جستجو می‌کند. اگر janet.h و janetconf.h به‌عنوان فایل‌های include پیش‌فرض روی سیستم شما موجود باشند، به این مقدار نیازی نیست. در صورت عدم ارائه، مقدار پیش‌فرض /../include/janet خواهد بود. گزینهٔ --headerpath=/some/path این متغیر را بازنویسی می‌کند. .RE .B JANET_LIBPATH .RS مشابه با JANET_HEADERPATH، این مسیر جایی است که jpm برای libjanet.a جهت ایجاد فایل‌های اجرایی مستقل جستجو می‌کند. در یک نصب عادی نیازی به تنظیم این متغیر نیست. در صورت عدم ارائه، مقدار پیش‌فرض آن /../lib خواهد بود. گزینهٔ --libpath=/some/path این متغیر را بازنویسی می‌کند. .RE .B JANET_BINPATH .RS دایرکتوری‌ای که jpm اسکریپت‌های باینری و فایل‌های اجرایی را در آن نصب می‌کند. مقدار پیش‌فرض (dyn :syspath)/bin است. گزینهٔ --binpath=/some/path این متغیر را بازنویسی می‌کند. .RE .B JANET_BUILDPATH .RS دایرکتوری‌ای که jpm فایل‌های میانی، کدهای شیء (object code) و فایل‌های اجرایی کامپایل‌شده را در آن قرار می‌دهد. مقدار پیش‌فرض ./build است. گزینهٔ --buildpath=/some/path این متغیر را بازنویسی خواهد کرد. پیش از ساخت باید مطمئن شوید که دایرکتوری‌های بالاتر از این مسیر وجود دارند. .RE .B JANET_PKGLIST .RS آدرس اینترنتی مخزن git که حاوی فهرست بسته‌ها است. این متغیر امکان نصب بسته‌ها با نام‌های کوتاه را فراهم می‌کند که عمدتاً برای راحتی است. با این حال، وابستگی‌های بسته می‌توانند از نام‌های کوتاه استفاده کنند و فهرست‌های بسته می‌توانند برای انتخاب مجموعهٔ خاصی از نسخه‌های وابستگی برای کل یک پروژه به کار روند. .RE .B JANET_GIT .RS یک مسیر اختیاری به فایل اجرایی git که برای کلون کردن وابستگی‌های git استفاده می‌شود. به‌طور پیش‌فرض از "git" در $PATH جاری استفاده می‌کند. در صورت داشتن یک نصب عادی از git، نیازی به تنظیم این متغیر ندارید. .RE .B JANET_JPM_CONFIG .RS یک مسیر اختیاری به فایل پیکربندی برای بارگذاری. این گزینه توسط گزینهٔ خط فرمان --config-file بازنویسی می‌شود. .SH "نویسندگان (AUTHORS)" نوشته‌شده توسط Calvin Rose