11use std:: {
2- env, fs, io ,
2+ env, fs,
33 path:: { PathBuf , absolute} ,
44} ;
55
@@ -12,7 +12,6 @@ use defold_nvim_core::{
1212} ;
1313use tracing:: Level ;
1414use tracing_appender:: rolling:: never;
15- use tracing_subscriber:: fmt:: writer:: MakeWriterExt ;
1615
1716use crate :: plugin_config:: { LauncherType , PluginConfig , SocketType } ;
1817
@@ -106,7 +105,15 @@ enum Commands {
106105}
107106
108107fn main ( ) -> Result < ( ) > {
109- let args = Args :: parse ( ) ;
108+ let mut err = None ;
109+
110+ let args = match Args :: try_parse ( ) {
111+ Ok ( args) => Some ( args) ,
112+ Err ( e) => {
113+ err = Some ( e) ;
114+ None
115+ }
116+ } ;
110117
111118 let logs = dirs:: cache_dir ( )
112119 . context ( "could not get cache dir" ) ?
@@ -115,26 +122,31 @@ fn main() -> Result<()> {
115122
116123 fs:: create_dir_all ( & logs) ?;
117124
118- let ( stdout, _stdout_guard) = tracing_appender:: non_blocking ( io:: stdout ( ) ) ;
119125 let ( logfile, _logfile_guard) = tracing_appender:: non_blocking ( never ( logs, "bridge.log" ) ) ;
120126
121- let writer = stdout. and ( logfile) ;
122-
123127 tracing_subscriber:: fmt ( )
124128 . with_file ( true )
125129 . with_line_number ( true )
126- . with_max_level ( if args. debug {
130+ . with_max_level ( if args. as_ref ( ) . is_some_and ( |args| args . debug ) {
127131 Level :: DEBUG
128132 } else {
129133 Level :: INFO
130134 } )
131- . with_writer ( writer)
135+ . with_writer ( logfile)
136+ . with_ansi ( false )
132137 . init ( ) ;
133138
134139 tracing:: info!( "Starting defold.nvim bridge" , ) ;
135140 tracing:: debug!( "CLI: {}" , env:: args( ) . collect:: <Vec <String >>( ) . join( " " ) ) ;
136141 tracing:: debug!( "Clap: {args:?}" ) ;
137142
143+ if let Some ( err) = err {
144+ tracing:: error!( "Clap Error {}" , err. to_string( ) ) ;
145+ err. exit ( ) ;
146+ }
147+
148+ let args = args. unwrap ( ) ;
149+
138150 match args. cmd {
139151 Commands :: LaunchNeovim {
140152 launcher_type,
@@ -163,11 +175,11 @@ fn main() -> Result<()> {
163175 Commands :: FocusGame { game_root_dir } => focus_game ( absolute ( game_root_dir) ?) ?,
164176 Commands :: DownloadNeovide => {
165177 let path = neovide:: update_or_install ( ) ?;
166- tracing :: info !( "Installed neovide at {path:?}" ) ;
178+ println ! ( "Installed neovide at {}" , path . display ( ) ) ;
167179 }
168180 Commands :: DownloadMobdap => {
169181 let path = mobdap:: update_or_install ( ) ?;
170- tracing :: info !( "Installed mobdap at {path:?}" ) ;
182+ println ! ( "Installed mobdap at {}" , path . display ( ) ) ;
171183 }
172184 Commands :: InstallDependencies {
173185 force_redownload,
@@ -176,7 +188,7 @@ fn main() -> Result<()> {
176188 let root_dir = absolute ( & game_root_dir) ?;
177189
178190 project:: install_dependencies ( & root_dir, force_redownload) ?;
179- tracing :: info !( "Finished installing dependencies for {game_root_dir}" , ) ;
191+ println ! ( "Finished installing dependencies for {game_root_dir}" , ) ;
180192 }
181193 Commands :: ListDependencies { game_root_dir } => {
182194 let root_dir = absolute ( & game_root_dir) ?;
@@ -187,9 +199,9 @@ fn main() -> Result<()> {
187199 }
188200 Commands :: FindEditorPort => {
189201 if let Some ( port) = editor:: find_port ( ) {
190- tracing :: info !( "Editor is running at port {port}" ) ;
202+ println ! ( "Editor is running at port {port}" ) ;
191203 } else {
192- tracing :: info !( "Could not find editor port, is the editor open?" ) ;
204+ println ! ( "Could not find editor port, is the editor open?" ) ;
193205 }
194206 }
195207 Commands :: SendCommand { port, command } => {
0 commit comments