1 unstable release
0.1.0 | May 22, 2024 |
---|
#2 in #bubble
26KB
557 lines
Bubblers
Crustacean CLI that expels bubbles
Bubblers is a simple command line interface (CLI) builder in Rust. It provides rustubble built-in
Features
- Simple API for creating CLI applications
- Support for various command types (standard, UI, UI with return)
- Support for different argument types
- Support for diverse UI elements (input form, text area, loader, table, progress bar, timer, stopwatch, viewport, item list, menu list)
- Execution support for commands and UI elements
Installation
To include Bubblers in your project, add the following to your Cargo.toml
:
[dependencies]
bubblers = "0.1.0"
Usage
Creating a Basic CLI
Here is an example of how to create a basic CLI application using Bubblers:
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();
}
Adding UI Elements
Bubblers supports various UI elements. Here is an example of adding an input form:
cli.add_input(
"input",
"Get user input",
"Enter text here...",
"",
"Your Input:"
);
Implementing Custom Commands
You can implement custom commands and add them to your CLI. Here's an example:
cli.add_command(CommandConfig::new_standard(
"custom_cmd",
"Execute a custom command",
Arc::new(|args| {
println!("Executing custom command with args: {:?}", args);
}),
));
Full Example
Here's a full example of a CLI application using various features of Bubblers:
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();
}
Contributing
Contributions are welcome! Please submit a pull request or create an issue to discuss your ideas.
License
Bubblers is licensed under the MIT License. See LICENSE for more information.
Dependencies
~13–22MB
~268K SLoC