DUNE-EXEC(1) Dune Manual DUNE-EXEC(1)

dune-exec - اجرای یک دستور در محیطی مشابه زمانی که نصب انجام شده است

dune exec [OPTION]… PROG [ARGS]…

دستور dune exec -- COMMAND باید به همان شیوه‌ای رفتار کند که گویی دستورات زیر را اجرا کرده‌اید:

$ dune install
$ COMMAND

به ویژه اگر دستور dune exec ocaml را اجرا کنید، با استفاده از دستورالعمل‌های معمول خود (مانند #require) به کتابخانه‌های تعریف‌شده در فضای کاری دسترسی خواهید داشت.

هنگامی که یک / در ابتدای دستور وجود داشته باشد (مسیر مطلق)، مسیر به عنوان یک مسیر مطلق تفسیر می‌شود.

هنگامی که یک / در هر موقعیت دیگری قرار داشته باشد (مسیر نسبی)، مسیر به صورت نسبی نسبت به زمینه ساخت (build context) + دایرکتوری کاری فعلی (یا مقدار --root هنگام اجرا در خارج از ریشه پروژه) تفسیر می‌شود.

--action-stderr-on-success=VAL
مشابه --action-stdout-on-success اما برای خطای استاندارد به جای خروجی استاندارد اعمال می‌شود. یک مقدار پیش‌فرض مناسب برای مخازن بزرگ تک‌مخزنی (monorepo)، گزینه --action-stdout-on-success=swallow --action-stderr-on-success=must-be-empty است. این کار تضمین می‌کند که یک ساخت موفق، خروجی خالی و «تمیز» داشته باشد.
--action-stdout-on-success=VAL
نحوه مدیریت خروجی استاندارد عملیات‌ها را در صورت موفقیت آن‌ها مشخص می‌کند. مقادیر ممکن عبارتند از: print برای چاپ مستقیم آن در خروجی Dune، swallow برای نادیده گرفتن کامل آن و must-be-empty برای الزام به اینکه عملیات هیچ خروجی چاپ نکرده باشد. با تنظیم must-be-empty، اگر عملیات چیزی در خروجی استاندارد خود چاپ کند، Dune آن را ناموفق تلقی خواهد کرد. مقدار پیش‌فرض print است.
--build-info
نمایش اطلاعات ساخت.
--context=CONTEXT (در صورت عدم تعیین=default)
اجرای دستور در این زمینه ساخت (build context).
--display-separate-messages
جداسازی پیام‌های خطا با یک خط خالی.
--error-reporting=VAL (در صورت عدم تعیین=deterministic)
زمان گزارش خطاهای ساخت را کنترل می‌کند. مقدار early خطاها را به محض شناسایی گزارش می‌دهد. مقدار deterministic خطاها را در پایان فرایند ساخت و با ترتیبی مشخص و معین گزارش می‌کند. مقدار twice هر خطا را دو بار گزارش می‌دهد: یک بار به محض شناسایی خطا و سپس مجدداً در پایان ساخت با ترتیبی معین.
-f, --force
اجرای مجدد اجباری عملیات‌های مرتبط با نام‌های مستعار (alias) حتی در صورتی که وابستگی‌های آن‌ها تغییر نکرده باشد.
--file-watcher=VAL (در صورت عدم تعیین=automatic)
سازوکار تشخیص تغییرات در کد منبع. مقدار Automatic باعث می‌شود dune یک برنامه خارجی را برای تشخیص تغییرات اجرا کند. مقدار Manual به dune اطلاع می‌دهد که تغییر فایل‌ها به صورت دستی اعلام می‌شود.
--no-build
عدم ساخت مجدد هدف پیش از اجرا.
--passive-watch-mode
مشابه [--watch]، اما فرایند ساخت فقط زمانی آغاز می‌شود که از بیرون از طریق یک RPC دستور داده شود.
--sandbox=VAL (در صورت عدم وجود متغیر محیطی DUNE_SANDBOX)
تنظیم حالت سندباکس (محیط ایزوله). برخی عملیات‌ها نیازمند حالت سندباکس خاصی هستند، بنابراین این تنظیم را نادیده می‌گیرند. مقادیر مجاز عبارتند از: none، symlink، copy، hardlink.
--stop-on-first-error
توقف فرایند ساخت به محض مواجهه با نخستین خطا.
-w, --watch
به جای پایان دادن به فرایند ساخت پس از اتمام، به طور مداوم در انتظار تغییرات فایل‌ها می‌ماند.
--wait-for-filesystem-clock
ابزار Dune محتوای فایل‌ها را برای بهبود فرایند افزایشی خلاصه (digest) می‌کند. این خلاصه‌ها خود در حافظه پنهان نگهداری می‌شوند. در برخی موارد، Dune برای قابلیت اطمینان، نیاز به دور انداختن برخی از ورودی‌های حافظه پنهان خلاصه دارد. این گزینه باعث می‌شود Dune منتظر پیش رفتن ساعت سیستم‌فایل بماند تا نیازی به دور انداختن هیچ موردی نداشته باشد. احتمالاً نیازی به این گزینه نخواهید داشت؛ این گزینه بیشتر برای توسعه‌دهندگان Dune جهت تکرارپذیری بیشتر آزمایش‌های حافظه پنهان خلاصه مفید است.

این گزینه‌ها میان تمامی دستورها مشترک هستند.

--always-show-command-line
همیشه خط فرمان کامل برنامه‌های اجراشده توسط dune را نمایش می‌دهد.
--auto-promote
ترفیع خودکار فایل‌ها. این عمل مشابه اجرای dune promote پس از ساخت است.
--build-dir=FILE (در صورت عدم وجود متغیر محیطی DUNE_BUILD_DIR)
دایرکتوری مشخص‌شده برای ساخت. در صورت عدم تعیین، مقدار پیش‌فرض _build است.
--cache=VAL (در صورت عدم وجود متغیر محیطی DUNE_CACHE)
فعال یا غیرفعال کردن حافظه پنهان Dune (یکی از مقادیر disabled، enabled-except-user-rules یا enabled). پیش‌فرض `enabled-except-user-rules` است.
--cache-check-probability=VAL (در صورت عدم وجود متغیر محیطی DUNE_CACHE_CHECK_PROBABILITY)
بررسی تکرارپذیری ساخت با اجرای مجدد قواعدی که به‌صورت تصادفی انتخاب شده‌اند و مقایسه نتایج آن‌ها با موارد ذخیره‌شده در حافظه پنهان Dune. توجه: با افزایش احتمال این بررسی‌ها، سرعت ساخت کاهش می‌یابد. احتمال پیش‌فرض صفر است، یعنی هیچ قاعده‌ای بررسی نمی‌شود.
--cache-storage-mode=VAL (در صورت عدم وجود متغیر محیطی DUNE_CACHE_STORAGE_MODE)
حالت ذخیره‌سازی حافظه پنهان Dune (یکی از مقادیر auto، hardlink یا copy). پیش‌فرض `hardlink` است.
--config-file=FILE
بارگذاری این فایل پیکربندی به جای فایل پیش‌فرض.
--debug-backtraces
همیشه ردپای پشته (backtrace) استثناها را چاپ می‌کند.
--debug-dependency-path
در صورت بروز خطا، مسیر وابستگی را از اهداف مشخص‌شده در خط فرمان تا قاعده‌ای که با شکست مواجه شده چاپ می‌کند.
--debug-package-logs (در صورت عدم وجود متغیر محیطی DUNE_DEBUG_PACKAGE_LOGS)
همیشه لاگ‌های استاندارد را هنگام ساخت بسته‌ها چاپ می‌کند.
--default-target=TARGET (در صورت عدم تعیین=@@default)
تعیین هدف پیش‌فرضی که در صورت مشخص نشدن هیچ هدفی برای dune build استفاده می‌شود.
--diff-command=VAL (در صورت عدم وجود متغیر محیطی DUNE_DIFF_COMMAND)
دستور شل مورد استفاده برای مقایسه (diff) فایل‌ها. از - برای غیرفعال کردن چاپ تفاوت‌ها استفاده کنید.
--disable-promotion (در صورت عدم وجود متغیر محیطی DUNE_DISABLE_PROMOTION)
غیرفعال کردن تمام قواعد ترفیع.
--display=MODE
کنترل حالت نمایش خروجی Dune. برای جزئیات بیشتر dune-config(5) را ببینید. مقادیر معتبر برای این گزینه عبارتند از: progress، verbose، short، quiet یا tui.
--dump-gc-stats=FILE
تخلیه آمار زباله‌روب در یک فایل پس از تکمیل ساخت.
--help[=FMT] (پیش‌فرض=auto)
نمایش این راهنما در قالب FMT. مقدار FMT باید یکی از موارد auto، pager، groff یا plain باشد. با مقدار auto، هر زمان متغیر محیطی TERM برابر با dumb یا تعریف‌نشده باشد، قالب به صورت pager یا plain خواهد بود.
--ignore-promoted-rules
نادیده گرفتن قواعد با حالت (mode promote)، به جز مواردی با (only ...). متغیر %{ignoring_promoted_rules} در فایل‌های dune نشان می‌دهد که این گزینه ارسال شده است یا خیر.
--instrument-with=BACKENDS (در صورت عدم وجود متغیر محیطی DUNE_INSTRUMENT_WITH)
فعال‌سازی ابزار دقیق توسط BACKENDS. مقدار BACKENDS فهرستی از نام‌های کتابخانه‌هاست که با کاما جدا شده‌اند و هر یک از آن‌ها باید یک backend ابزار دقیق را اعلان کرده باشد.
-j JOBS (در صورت عدم وجود متغیر محیطی DUNE_JOBS)
اجرای همزمان حداکثر JOBS دستور. مقدار JOBS باید یک عدد صحیح مثبت یا auto برای تشخیص خودکار تعداد هسته‌ها (حالت پیش‌فرض) باشد.
--no-buffer
عدم بافر کردن خروجی دستورات اجراشده توسط dune. به طور پیش‌فرض dune خروجی زیردستورات را بافر می‌کند تا از درهم‌آمیختگی خروجی هنگام اجرای موازی چند دستور جلوگیری شود. با این حال، این موضوع می‌تواند هنگام اشکال‌زدایی آزمون‌های طولانی‌مدت مشکل‌ساز باشد. با گزینه --no-buffer، دستورات دسترسی مستقیم به ترمینال دارند. توجه داشته باشید که در نتیجه این کار، خروجی آن‌ها در فایل لاگ ثبت نخواهد شد. شما باید از این گزینه در ترکیب با -j 1 استفاده کنید تا از تداخل خروجی‌ها جلوگیری شود. علاوه بر این باید از --verbose نیز استفاده کنید تا مطمئن شوید دستورات پیش از اجرا چاپ می‌شوند.
--no-config
عدم بارگذاری فایل پیکربندی.
--no-print-directory
عدم نمایش پیام‌های «Entering directory».
--only-packages=PACKAGES
نادیده گرفتن بندهای مربوط به بسته‌ای که در PACKAGES نیست. مقدار PACKAGES فهرستی از نام بسته‌هاست که با کاما جدا شده‌اند. توجه داشته باشید که این کار تأثیری مشابه حذف بندهای مربوطه از فایل‌های dune دارد. این گزینه عمدتاً برای انتشار در نظر گرفته شده است. در طول توسعه، احتمالاً آنچه می‌خواهید ساخت یک هدف خاص <package>.install است.
-p PACKAGES, --for-release-of-packages=PACKAGES (الزامی)
کوته‌نوشتی برای --release --pkg=disabled --only-packages PACKAGE. شما باید از این گزینه در فایل‌های <package>.opam خود استفاده کنید تا در صورت وجود چندین بسته در پروژه، تنها موارد ضروری ساخته شوند و ساخت‌های تکرارپذیر حاصل گردد.
--pkg=VAL
فعال یا غیرفعال کردن مدیریت بسته. رفتار پیش‌فرض بستگی به این دارد که آیا یک پوشه قفل (lock) وجود دارد یا خیر.
--profile=VAL (در صورت عدم وجود متغیر محیطی DUNE_PROFILE)
انتخاب پروفایل ساخت، برای نمونه dev یا release. مقدار پیش‌فرض dev است.
--promote-install-files[=VAL] (پیش‌فرض=true)
ترفیع دادن فایل‌های تولیدشده <package>.install به درخت منبع.
--release
قرار دادن dune در حالت تکرارپذیر release (انتشار). کوته‌نوشتی برای --root . --ignore-promoted-rules --no-config --profile release --always-show-command-line --promote-install-files --require-dune-project-file --default-target @install. شما باید از این گزینه برای ساخت‌های انتشار استفاده کنید. برای نمونه، باید از این گزینه در فایل‌های <package>.opam خود استفاده کنید؛ مگر اینکه از قبل از -p استفاده کرده باشید، زیرا -p خود شامل این گزینه است.
--require-dune-project-file[=VAL] (پیش‌فرض=true)
در صورت عدم وجود فایل dune-project با شکست مواجه شود.
--root=DIR (در صورت عدم وجود متغیر محیطی DUNE_ROOT)
استفاده از این دایرکتوری به عنوان ریشه فضای کاری به جای حدس زدن آن. توجه داشته باشید که این گزینه تفسیر اهداف ارائه‌شده در خط فرمان را تغییر نمی‌دهد. این گزینه فقط برای اسکریپت‌ها در نظر گرفته شده است.
--store-orig-source-dir (در صورت عدم وجود متغیر محیطی DUNE_STORE_ORIG_SOURCE_DIR)
ذخیره مکان اصلی منبع در فراداده dune-package.
--target-exec=TOOLCHAIN=CMD (در صورت عدم وجود متغیر محیطی DUNE_TARGET_EXEC)
دستور پوششی برای اجرای باینری‌های مقصد هنگام کامپایل متقابل. قالب: TOOLCHAIN=CMD (برای نمونه، 'windows=wine').
--terminal-persistence=MODE
تغییر نحوه نمایش گزارش نتایج ساخت در کنسول بین ساخت‌های مجدد در حالت --watch. حالت‌های پشتیبانی‌شده: preserve، clear-on-rebuild، clear-on-rebuild-and-flush-history.
--trace-file=FILE
خروجی داده‌های ردیابی در قالب catapult (سازگار با chrome://tracing).
--verbose
مشابه --display verbose.
--version
نمایش اطلاعات نسخه.
--watch-exclusions=REGEX
افزودن یک عبارت باقاعده POSIX که دایرکتوری‌های منطبق را از `dune build --watch` مستثنی می‌کند. گزینه --watch-exclusions می‌تواند برای افزودن چندین مورد استثنا تکرار شود. همچنین می‌توان از نقطه ویرگول به عنوان جداکننده استفاده کرد. اگر هیچ استثنایی ارائه نشود، مجموعه‌ای استاندارد از استثناها استفاده می‌شود؛ با این حال، اگر یک یا چند گزینه --watch-exclusions استفاده شود، هیچ‌یک از استثناهای استاندارد اعمال نخواهند شد. استثناهای استاندارد عبارتند از: ^_opam /_opam ^_esy /_esy ^\.#.* /\.#.* ~$ ^#[^#]*#$ /#[^#]*#$ ^4913$ /4913$ /.git /.hg :/windows
--workspace=FILE (در صورت عدم وجود متغیر محیطی DUNE_WORKSPACE)
استفاده از این فایل فضای کاری مشخص به جای جستجوی آن.
-x VAL (در صورت عدم وجود متغیر محیطی DUNE_CROSS_TARGET)
کامپایل متقابل با استفاده از این زنجیره ابزار.

برای دریافت راهنما درباره یک دستور خاص، از `dune COMMAND --help' استفاده کنید.

دستور dune exec با مقادیر زیر خارج می‌شود:

0
در صورت موفقیت.
1
در صورت بروز خطا.
130
اگر با یک سیگنال متوقف شود.

این متغیرهای محیطی بر اجرای exec تأثیر می‌گذارند:

دایرکتوری ساخت مشخص‌شده. در صورت عدم تعیین، مقدار پیش‌فرض _build است.
فعال یا غیرفعال کردن حافظه پنهان Dune (یکی از مقادیر disabled، enabled-except-user-rules یا enabled). پیش‌فرض `enabled-except-user-rules` است.
بررسی تکرارپذیری ساخت با اجرای مجدد قواعد به‌صورت تصادفی و مقایسه نتایج آن‌ها با موارد ذخیره‌شده در حافظه پنهان Dune. توجه: با افزایش احتمال این بررسی‌ها، سرعت ساخت کاهش می‌یابد. احتمال پیش‌فرض صفر است، یعنی هیچ قاعده‌ای بررسی نمی‌شود.
حالت ذخیره‌سازی حافظه پنهان Dune (یکی از مقادیر auto، hardlink یا copy). پیش‌فرض `hardlink` است.
کامپایل متقابل با استفاده از این زنجیره ابزار.
همیشه لاگ‌های استاندارد را هنگام ساخت بسته‌ها چاپ می‌کند.
دستور شل مورد استفاده برای مقایسه (diff) فایل‌ها. از - برای غیرفعال کردن چاپ تفاوت‌ها استفاده کنید.
غیرفعال کردن تمام قواعد ترفیع.
فعال‌سازی ابزار دقیق توسط BACKENDS. مقدار BACKENDS فهرستی از نام‌های کتابخانه‌هاست که با کاما جدا شده‌اند و هر یک از آن‌ها باید یک backend ابزار دقیق را اعلان کرده باشد.
اجرای همزمان حداکثر JOBS دستور. مقدار JOBS باید یک عدد صحیح مثبت یا auto برای تشخیص خودکار تعداد هسته‌ها (حالت پیش‌فرض) باشد.
پروفایل ساخت. در صورت عدم تعیین، dev یا در صورت تنظیم -p، مقدار release است.
استفاده از این دایرکتوری به عنوان ریشه فضای کاری به جای حدس زدن آن. توجه داشته باشید که این گزینه تفسیر اهداف ارائه‌شده در خط فرمان را تغییر نمی‌دهد. این گزینه فقط برای اسکریپت‌ها در نظر گرفته شده است.
حالت سندباکس مورد استفاده به صورت پیش‌فرض. (گزینه --sandbox را ببینید)
ذخیره مکان اصلی منبع در فراداده dune-package.
دستور پوششی برای اجرای باینری‌های مقصد هنگام کامپایل متقابل. قالب: TOOLCHAIN=CMD (برای نمونه، 'windows=wine').
استفاده از این فایل فضای کاری مشخص به جای جستجوی آن.

گزارش‌های باگ را در نشانی زیر بررسی کنید: https://github.com/ocaml/dune/issues

dune(1)

1.
اجرای فایل اجرایی با نام `my_exec`:
dune exec my_exec
2.
اجرای فایل اجرایی تعریف‌شده در `foo.ml` با آرگومان `arg`:
dune exec -- ./foo.exe arg
Dune 3.24.2