@@ -6,7 +6,9 @@ use anyhow::Result;
66use api:: { MochifyClient , ProcessParams } ;
77use clap:: Parser ;
88use cli:: { Args , Commands } ;
9+ use indicatif:: { ProgressBar , ProgressStyle } ;
910use std:: path:: PathBuf ;
11+ use std:: time:: Duration ;
1012
1113#[ tokio:: main]
1214async fn main ( ) -> Result < ( ) > {
@@ -38,8 +40,11 @@ async fn process_files(args: Args) -> Result<()> {
3840
3941 // If a prompt was supplied, resolve params for all files in one request.
4042 let prompt_map = if let Some ( ref prompt) = args. prompt {
43+ let sp = spinner ( "Parsing prompt..." ) ;
4144 let paths: Vec < & std:: path:: Path > = args. files . iter ( ) . map ( |p| p. as_path ( ) ) . collect ( ) ;
42- Some ( client. resolve_prompt ( prompt, & paths) . await ?)
45+ let map = client. resolve_prompt ( prompt, & paths) . await ?;
46+ sp. finish_and_clear ( ) ;
47+ Some ( map)
4348 } else {
4449 None
4550 } ;
@@ -65,9 +70,17 @@ async fn process_files(args: Args) -> Result<()> {
6570 None => explicit. clone ( ) ,
6671 } ;
6772
73+ let name = file_path. file_name ( ) . map ( |n| n. to_string_lossy ( ) . into_owned ( ) ) . unwrap_or_default ( ) ;
74+ let sp = spinner ( format ! ( "Uploading {name}..." ) ) ;
6875 match client. squish ( file_path, & params, & out_dir) . await {
69- Ok ( out) => println ! ( "{}" , out. display( ) ) ,
70- Err ( e) => eprintln ! ( "Error processing {}: {e:#}" , file_path. display( ) ) ,
76+ Ok ( out) => {
77+ sp. finish_and_clear ( ) ;
78+ println ! ( "{}" , out. display( ) ) ;
79+ }
80+ Err ( e) => {
81+ sp. finish_and_clear ( ) ;
82+ eprintln ! ( "Error processing {}: {e:#}" , file_path. display( ) ) ;
83+ }
7184 }
7285 }
7386
@@ -86,6 +99,19 @@ fn merge_params(base: ProcessParams, overrides: ProcessParams) -> ProcessParams
8699 }
87100}
88101
102+ fn spinner ( msg : impl Into < String > ) -> ProgressBar {
103+ let pb = ProgressBar :: new_spinner ( ) ;
104+ pb. set_style (
105+ ProgressStyle :: default_spinner ( )
106+ . tick_strings ( & [ "⠋" , "⠙" , "⠹" , "⠸" , "⠼" , "⠴" , "⠦" , "⠧" , "⠇" , "⠏" ] )
107+ . template ( "{spinner} {msg}" )
108+ . unwrap ( ) ,
109+ ) ;
110+ pb. set_message ( msg. into ( ) ) ;
111+ pb. enable_steady_tick ( Duration :: from_millis ( 80 ) ) ;
112+ pb
113+ }
114+
89115async fn run_mcp_server ( api_key : Option < String > ) -> Result < ( ) > {
90116 use rmcp:: ServiceExt ;
91117
0 commit comments