1- use pico_args:: Arguments ;
2-
1+ use atty:: Stream ;
32use ice:: app:: cli:: { parse_args, Command } ;
3+ use pico_args:: Arguments ;
4+ use std:: {
5+ ffi:: OsString ,
6+ io:: { self , Read } ,
7+ } ;
48
59fn print_usage ( ) {
6- println ! ( "ICE - A command-line tool for various ciphers, encoding, and text manipulation.\n " ) ;
7- println ! ( "USAGE:" ) ;
8- println ! ( " ice <SUBCOMMAND> [ARGUMENTS]" ) ;
9- println ! ( " ice help" ) ;
10- println ! ( "\n For a list of available subcommands, run `ice help`." ) ;
10+ println ! ( "ICE - A simple CTF tool store." ) ;
11+ println ! ( "Usage: ice <SUBCOMMAND> [ARGUMENTS]" ) ;
12+ println ! ( "Run 'ice help' for a list of available subcommands" ) ;
1113}
1214
1315fn main ( ) {
14- let mut args = Arguments :: from_env ( ) ;
16+ let mut args: Vec < OsString > = std:: env:: args_os ( ) . skip ( 1 ) . collect ( ) ;
17+
18+ if !atty:: is ( Stream :: Stdin ) {
19+ let mut input = String :: new ( ) ;
20+ io:: stdin ( ) . read_to_string ( & mut input) . unwrap ( ) ;
21+ let input = input. trim ( ) ;
22+ if !input. is_empty ( ) {
23+ args. push ( OsString :: from ( input) ) ;
24+ }
25+ }
26+
27+ let mut args = Arguments :: from_vec ( args) ;
1528
1629 let command = match parse_args ( & mut args) {
1730 Ok ( cmd) => cmd,
@@ -23,18 +36,12 @@ fn main() {
2336 } ;
2437
2538 match command {
26- Command :: Help => {
27- print_usage ( ) ;
28- }
29- Command :: Version => {
30- println ! ( "ice {}" , env!( "CARGO_PKG_VERSION" ) ) ;
31- }
39+ Command :: Help => print_usage ( ) ,
40+ Command :: Version => println ! ( "ice {}" , env!( "CARGO_PKG_VERSION" ) ) ,
3241 Command :: Unknown ( cmd) => {
3342 eprintln ! ( "Error: Unknown subcommand '{}'" , cmd) ;
3443 print_usage ( ) ;
3544 }
36- _ => {
37- command. run ( ) ;
38- }
45+ _ => command. run ( ) ,
3946 }
4047}
0 commit comments