1 个不稳定版本

0.1.0 2024年5月22日

#1809命令行工具

Apache-2.0

26KB
557

Bubblers

甲壳类动物 CLI,用于排出水泡

Rust

Bubblers 是一个简单的 Rust 命令行界面 (CLI) 构建工具。它内置了 rustubble

功能

  • 简单的 API 用于创建 CLI 应用程序
  • 支持各种命令类型(标准、UI、带返回的 UI)
  • 支持不同类型的参数
  • 支持各种 UI 元素(输入表单、文本区域、加载器、表格、进度条、计时器、秒表、视口、项目列表、菜单列表)
  • 支持命令和 UI 元素的执行

安装

要将 Bubblers 包含到您的项目中,请将以下内容添加到您的 Cargo.toml

[dependencies]
bubblers = "0.1.0"

用法

创建基本 CLI

以下是如何使用 Bubblers 创建基本 CLI 应用程序的示例

use std::{sync::Arc, io};
use bubblers::{CliConfig, CommandConfig, CommandType, ArgConfig};

fn main() {
    let mut cli = CliConfig::new("bubblers_app", "1.0", "A simple CLI app using Bubblers");

    let command = CommandConfig::new_standard(
        "greet",
        "Print a greeting message",
        Arc::new(|args| {
            if let Some(name) = args.get(0) {
                println!("Hello, {}!", name);
            } else {
                println!("Hello, world!");
            }
        }),
    ).add_arg(ArgConfig {
        name: "name",
        help: "Name to greet".to_string(),
        required: false,
    });

    cli.add_command(command);
    cli.execute();
}

添加 UI 元素

Bubblers 支持各种 UI 元素。以下是如何添加输入表单的示例

cli.add_input(
    "input",
    "Get user input",
    "Enter text here...",
    "",
    "Your Input:"
);

实现自定义命令

您可以实现自定义命令并将它们添加到您的 CLI 中。以下是一个示例

cli.add_command(CommandConfig::new_standard(
    "custom_cmd",
    "Execute a custom command",
    Arc::new(|args| {
        println!("Executing custom command with args: {:?}", args);
    }),
));

完整示例

以下是一个使用 Bubblers 的各种功能的 CLI 应用程序的完整示例

use std::{io, sync::Arc};
use bubblers::{CliConfig, CommandConfig, CommandType, ArgConfig};
use crossterm::style::Color;

fn main() {
    let mut cli = CliConfig::new("bubblers_app", "1.0", "A simple CLI app using Bubblers");

    // Standard Command
    cli.add_command(CommandConfig::new_standard(
        "greet",
        "Print a greeting message",
        Arc::new(|args| {
            if let Some(name) = args.get(0) {
                println!("Hello, {}!", name);
            } else {
                println!("Hello, world!");
            }
        }),
    ).add_arg(ArgConfig {
        name: "name",
        help: "Name to greet".to_string(),
        required: false,
    }));

    // UI Command
    cli.add_input(
        "input",
        "Get user input",
        "Enter text here...",
        "",
        "Your Input:"
    );

    // UI with Return Command
    cli.add_menu_list(
        "menu",
        "Select an option",
        "Main Menu",
        "Choose one of the following:",
        vec!["Option 1".to_string(), "Option 2".to_string()]
    );

    cli.execute();
}

贡献

欢迎贡献!请提交一个拉取请求或创建一个问题来讨论您的想法。

许可

Bubblers 在 MIT 许可下授权。有关更多信息,请参阅 LICENSE

依赖项

~12–22MB
~263K SLoC