Capp - پکیج برنامه کنسول
Capp یک پکیج قدرتمند Dart است که برای سادهسازی توسعه برنامههای کنسول تعاملی با ویژگیهایی برای مدیریت ورودیهای کاربر، تولید اطلاعات راهنما، مدیریت آرگومانها و ایجاد خروجیهای ساختاریافته مانند جداول و نشانگرهای پیشرفت طراحی شده است.
المانها
- نشانگرهای پیشرفت
- فیلدهای ورودی بله/خیر
- فیلدهای ورودی متن/عدد
- فیلدهای ورودی چندگزینهای
- انتخابگرهای چندگزینهای
- نمایش جدول
- نمایشگر Json
ویژگیها
- مدیریت آرگومان و گزینه: تعریف و مدیریت آسان آرگومانها و گزینههای خط فرمان.
- مدیریت ورودی کاربر: پشتیبانی از خواندن ورودیهای کاربر با پیامها و گزینههای انتخابی.
- خروجی ساختاریافته: نمایش جداول، پیامها به صورت رنگی و نشانگرهای پیشرفت مختلف در کنسول.
- تولید راهنما: تولید خودکار راهنمای کمک برای دستورات و گزینههای کنسول شما.
شروع به کار
cappرا بهpubspec.yamlخود اضافه کنید.package:capp/capp.dartرا import کنید.- دستورات، گزینهها و ورودیهای کاربر را برای ساخت برنامه کنسول تعاملی خود ایجاد کنید.
مثال استفاده
import "package:capp/capp.dart";
void main([
List<String> args = const [],
]) {
var app = CappManager(
main: CappController(
'',
options: [
CappOption(
name: 'help',
shortName: 'h',
description: 'Show help',
),
],
run: (c) async {
if (c.existsOption('help')) {
return CappConsole(c.manager.getHelp());
} else {
return test(c);
}
},
),
args: args,
controllers: [
CappController(
'test',
options: [],
run: test,
),
],
);
app.process();
}
Future<CappConsole> test(c) async {
const options = [
'Progress circle',
'Progress bar',
'Progress spinner',
'Yes/No questions',
'Input text',
'Make a table',
'Clear screen',
'Help',
'Exit',
];
var select = CappConsole.select(
'Select an option to test Widgets of console:',
options,
);
CappConsole.write('Your selection is: $select', CappColors.success);
// Progress circle
if (select == options[0]) {
await CappConsole.progress(
'I am waiting here for 5 secounds!',
() async => Future.delayed(Duration(seconds: 5)),
type: CappProgressType.circle,
);
}
// Progress bar
else if (select == options[1]) {
await CappConsole.progress(
'I am waiting here for 5 secounds!',
() async => Future.delayed(Duration(seconds: 5)),
type: CappProgressType.bar,
);
}
// Progress spinner
else if (select == options[2]) {
await CappConsole.progress(
'I am waiting here for 5 secounds!',
() async => Future.delayed(Duration(seconds: 5)),
type: CappProgressType.spinner,
);
}
// Yes/No Questions
else if (select == options[3]) {
final res = await CappConsole.yesNo('Do you agree? ');
CappConsole.write(
"Your answer is ${res ? 'YES' : 'NO'}",
CappColors.warning,
);
}
// Input text
else if (select == options[4]) {
var age = CappConsole.read(
'What is your age?',
isRequired: true,
isNumber: true,
);
CappConsole.write(
"Your age is: $age",
CappColors.success,
);
}
// Make a table
else if (select == options[5]) {
const table = [
['#', 'Name', 'Age', 'City', 'Job'],
['1', 'Farhad', '38', 'Amsterdam', 'Engineer'],
['2', 'Adrian', '25', 'Berlin', 'Teacher'],
['3', 'Arian', '33', 'Frankfort', 'Taxi driver']
];
CappConsole.writeTable(table);
CappConsole.writeTable(
table,
color: CappColors.warning,
dubleBorder: true,
);
}
// Clear Screen
else if (select == options[6]) {
CappConsole.clear();
}
// Help
else if (select == options[7]) {
CappConsole.write(c.manager.getHelp());
} else if (select == options.last) {
return CappConsole('Exit!');
}
return test(c);
}
مثال خروجی
$ dart ./example/example.dart
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 1
Your selection is: Progress circle
I am waiting here for 5 secounds! ⢿
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 2
Your selection is: Progress bar
I am waiting here for 5 secounds! █████░████████
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 3
Your selection is: Progress spinner
I am waiting here for 5 secounds! |----->-------|
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 4
Your selection is: Yes/No questions
Do you agree? (y/n): N
Your answer is NO
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 5
Your selection is: Input text
What is your age? 33
Your age is: 33
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 5
Your selection is: Input text
What is your age? 33
Your age is: 33
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 6
Your selection is: Make a table
┌───┬────────┬─────┬────────────┬─────────────┐
│ # │ Name │ Age │ City │ Job │
├───┼────────┼─────┼────────────┼─────────────┤
│ 1 │ Farhad │ 38 │ Amsterdam │ Engineer │
├───┼────────┼─────┼────────────┼─────────────┤
│ 2 │ Adrian │ 25 │ Berlin │ Teacher │
├───┼────────┼─────┼────────────┼─────────────┤
│ 3 │ Arian │ 33 │ Frankfort │ Taxi driver │
└───┴────────┴─────┴────────────┴─────────────┘
╔═══╦════════╦═════╦════════════╦═════════════╗
║ # ║ Name ║ Age ║ City ║ Job ║
╠═══╬════════╬═════╬════════════╬═════════════╣
║ 1 ║ Farhad ║ 38 ║ Amsterdam ║ Engineer ║
╠═══╬════════╬═════╬════════════╬═════════════╣
║ 2 ║ Adrian ║ 25 ║ Berlin ║ Teacher ║
╠═══╬════════╬═════╬════════════╬═════════════╣
║ 3 ║ Arian ║ 33 ║ Frankfort ║ Taxi driver ║
╚═══╩════════╩═════╩════════════╩═════════════╝
Select an option to test Widgets of console:
[1]. Progress circle
[2]. Progress bar
[3]. Progress spinner
[4]. Yes/No questions
[5]. Input text
[6]. Make a table
[7]. Clear screen
[8]. Help
[9]. Exit
Enter the number of the option: 8
Your selection is: Help
Available commands:
1) test:
──────────────────────────────
--help Show help
-h
──────────────────────────────