خط فرمان cli
برنامههای خط فرمان با چند دستور (مثل git commit)، و پرسیدن از کاربر.
واردسازی خط فرمان
بسیاری از ابزارها چند دستور دارند: salam build، salam run. بستهی خط فرمان دستورها را ثبت میکند، از روی آرگومان اول میفهمد کدام خواسته شده و راهنمای کلی را میسازد. برای پرچمهای هر دستور، بستهی پرچم را کنارش به کار ببرید.
روالهای درخواست و تایید از کاربر در پایانه چیزی میپرسند؛ نمونهشان اینجا اجرا نمیشود چون منتظر پاسخ میماند.
گونهها
برنامه App
ساختار برنامه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| name | name | رشته = "" | نام برنامه. |
| desc | desc | رشته = "" | شرح برنامه. |
| version | version | رشته = "" | نسخهی برنامه. |
| cmd_names | cmd_names | وکتور<رشته> | نام دستورها. |
| cmd_descs | cmd_descs | وکتور<رشته> | شرح دستورها. |
واردسازی خط فرمان
واردسازی رشته
روال اجرا کن(ب &: خط فرمان.برنامه، خط: رشته):
آرگ := رشته.تفکیک کردن(خط، " ")
د := خط فرمان.توزیع(ب، آرگ)
اگر د == خط فرمان.دستور راهنما:
سرچاپ "راهنما خواسته شد"
وگرنه د == خط فرمان.دستور نسخه:
سرچاپ "نسخه:", ب.version
وگرنه د == خط فرمان.دستور نامشخص:
سرچاپ "دستور ناشناخته"
وگرنه:
سرچاپ "اجرا:", د، خط فرمان.آرگومانهای باقیمانده(آرگ)
پایان
آرگ.آزادکن()
پایان
روال ریشه:
ناپایا ب := خط فرمان.جدید("salamctl"، "مدیریت پروژه"، "1.0.0")
خط فرمان.ثبت(ب، "build"، "ساختن پروژه")
خط فرمان.ثبت(ب، "test"، "اجرای آزمونها")
سرچاپ خط فرمان.دستور دارد(ب، "build")، خط فرمان.شرح دستور(ب، "test")
هر خط در ["build --fast"، "--help"، "--version"، "deploy"]:
اجرا کن(ب، خط)
پایان
چاپ خط فرمان.راهنما(ب)
پایانپایاها و متغیرها
دستور راهنما CmdHelp
پایا دستور راهنما: رشته = "__help__"توزیع وقتی راهنما خواسته شده، یا هیچ آرگومانی نیامده.نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
دستور نسخه CmdVersion
پایا دستور نسخه: رشته = "__version__"توزیع وقتی نسخه خواسته شده.نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
دستور نامشخص CmdUnknown
پایا دستور نامشخص: رشته = "__unknown__"توزیع برای دستوری که ثبت نشده.نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
روالها
جدید New
روال جدید(name: رشته، desc: رشته، version: رشته): برنامهنمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
ثبت Register
روال ثبت(app &: برنامه، name: رشته، desc: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
دستور دارد HasCommand
روال دستور دارد(app &: برنامه، name: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
شرح دستور CommandDesc
روال شرح دستور(app &: برنامه، name: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
توزیع Dispatch
روال توزیع(app &: برنامه، argv: وکتور<رشته>): رشته--help و --version خودکار شناخته میشوند.نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
آرگومانهای باقیمانده RemainingArgs
روال آرگومانهای باقیمانده(argv: وکتور<رشته>): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
راهنما Usage
روال راهنما(app &: برنامه): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: cli-Dispatch.salam
الزامی بودن پرچمها RequireFlags
روال الزامی بودن پرچمها(fs &: flag.FlagSet، names: وکتور<رشته>): وکتور<رشته>واردسازی خط فرمان
واردسازی پرچم
روال ریشه:
ناپایا پ := پرچم.جدید("deploy"، "")
دیرکن پرچم.آزادسازی(پ)
پرچم.افزودن رشته(پ، "host"، "h"، ""، "سرور")
پرچم.افزودن رشته(پ، "user"، "u"، ""، "کاربر")
ناپایا آرگ := وکتور {} برگردان وکتور<رشته>
دیرکن آرگ.آزادکن()
آرگ.بیفزا("--host=example.com")
پرچم.تجزیه(پ، آرگ)
ناپایا لازم := وکتور {} برگردان وکتور<رشته>
دیرکن لازم.آزادکن()
لازم.بیفزا("host")
لازم.بیفزا("user")
سرچاپ "جاافتاده:", خط فرمان.الزامی بودن پرچمها(پ، لازم)
پایانتایید Confirm
روال تایید(question: رشته): منطقیy یا yes درست است و هر چیز دیگری نادرست.واردسازی خط فرمان
روال ریشه:
نام := خط فرمان.درخواست("نام پروژه: ")
زبان := خط فرمان.درخواست با پیش فرض("زبان"، "فارسی")
اگر خط فرمان.تایید("ساخته شود؟"):
سرچاپ "ساختن", نام، "به", زبان
پایان
پایاندرخواست Prompt
روال درخواست(question: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: cli-Prompt.salam
درخواست با پیش فرض PromptOr
روال درخواست با پیش فرض(question: رشته، def: رشته): رشتهدرخواست، ولی اگر کاربر چیزی ننویسد مقدار پیشفرض را برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: cli-Prompt.salam