diff --git a/Cargo.lock b/Cargo.lock index a038071..9b856ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -267,6 +267,27 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +[[package]] +name = "color-print" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aa954171903797d5623e047d9ab69d91b493657917bdfb8c2c80ecaf9cdb6f4" +dependencies = [ + "color-print-proc-macro", +] + +[[package]] +name = "color-print-proc-macro" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692186b5ebe54007e45a59aea47ece9eb4108e141326c304cdc91699a7118a22" +dependencies = [ + "nom", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "colorchoice" version = "1.0.4" @@ -1151,6 +1172,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "mio" version = "1.1.1" @@ -1172,6 +1199,7 @@ dependencies = [ "clap", "clap-verbosity-flag", "clap_complete", + "color-print", "const_format", "derive_more", "dialoguer", @@ -1214,6 +1242,16 @@ dependencies = [ "memoffset", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nu-ansi-term" version = "0.50.3" diff --git a/Cargo.toml b/Cargo.toml index 2a7ff9d..b84cddd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ bincode = "2.0.1" clap = { version = "4.5.53", features = ["cargo", "derive"] } clap-verbosity-flag = { version = "3.0.4", features = [ "tracing" ] } clap_complete = { version = "4.5.61", features = ["unstable-dynamic"] } +color-print = "0.3.7" const_format = "0.2.35" derive_more = { version = "2.1.0", features = ["display", "error"] } dialoguer = "0.12.0" diff --git a/src/main.rs b/src/main.rs index 6efcbc8..b20f1ab 100644 --- a/src/main.rs +++ b/src/main.rs @@ -62,6 +62,28 @@ const fn long_version() -> &'static str { const LONG_VERSION: &str = long_version(); +const EXAMPLES: &str = color_print::cstr!( + r#" +Examples: + # Create two users 'alice_user1' and 'alice_user2' + muscl create-user alice_user1 alice_user2 + + # Create two databases 'alice_db1' and 'alice_db2' + muscl create-db alice_db1 alice_db2 + + # Grant Select, Update, Insert and Delete privileges on 'alice_db1' to 'alice_user1' + muscl edit-privs alice_db1 alice_user1 +suid + + # Show all databases + muscl show-db + + # Show which users have privileges on which databases + muscl show-privs +"# +); + +const AFTER_LONG_HELP: &str = const_format::concatcp!(EXAMPLES, "\n", KIND_REGARDS,); + /// Database administration tool for non-admin users to manage their own MySQL databases and users. /// /// This tool allows you to manage users and databases in MySQL. @@ -77,7 +99,7 @@ const LONG_VERSION: &str = long_version(); disable_help_subcommand = true, propagate_version = true, before_long_help = ASCII_BANNER, - after_long_help = KIND_REGARDS, + after_long_help = AFTER_LONG_HELP, long_version = LONG_VERSION, // NOTE: All non-registered "subcommands" are processed before Arg::parse() is called. subcommand_required = true,