@@ -11,7 +11,8 @@ use clap::Parser;
1111use registry_helper:: RegistryHelper ;
1212use schemars:: schema_for;
1313use std:: process:: exit;
14-
14+ use tracing:: { debug, error} ;
15+ use tracing_subscriber:: { filter:: LevelFilter , prelude:: __tracing_subscriber_SubscriberExt, EnvFilter , Layer } ;
1516use crate :: config:: Registry ;
1617
1718mod args;
@@ -28,27 +29,30 @@ fn main() {
2829 #[ cfg( debug_assertions) ]
2930 check_debug ( ) ;
3031
32+ enable_tracing ( ) ;
33+
3134 let args = Arguments :: parse ( ) ;
3235 match args. subcommand {
3336 args:: SubCommand :: Query { key_path, value_name, recurse } => {
34- eprintln ! ( "Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
37+ debug ! ( "Get key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
3538 } ,
3639 args:: SubCommand :: Set { key_path, value } => {
37- eprintln ! ( "Set key_path: {key_path}, value: {value}" ) ;
40+ debug ! ( "Set key_path: {key_path}, value: {value}" ) ;
3841 } ,
3942 args:: SubCommand :: Remove { key_path, value_name, recurse } => {
40- eprintln ! ( "Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
43+ debug ! ( "Remove key_path: {key_path}, value_name: {value_name:?}, recurse: {recurse}" ) ;
4144 } ,
4245 args:: SubCommand :: Find { key_path, find, recurse, keys_only, values_only } => {
43- eprintln ! ( "Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}" ) ;
46+ debug ! ( "Find key_path: {key_path}, find: {find}, recurse: {recurse:?}, keys_only: {keys_only:?}, values_only: {values_only:?}" ) ;
4447 } ,
4548 args:: SubCommand :: Config { subcommand } => {
4649 match subcommand {
4750 args:: ConfigSubCommand :: Get { input} => {
51+ debug ! ( "Get input: {input}" ) ;
4852 let reg_helper = match RegistryHelper :: new ( & input) {
4953 Ok ( reg_helper) => reg_helper,
5054 Err ( err) => {
51- eprintln ! ( "Error: {err}" ) ;
55+ error ! ( "{err}" ) ;
5256 exit ( EXIT_INVALID_INPUT ) ;
5357 }
5458 } ;
@@ -58,16 +62,17 @@ fn main() {
5862 println ! ( "{json}" ) ;
5963 } ,
6064 Err ( err) => {
61- eprintln ! ( "Error: {err}" ) ;
65+ error ! ( "{err}" ) ;
6266 exit ( EXIT_REGISTRY_ERROR ) ;
6367 }
6468 }
6569 } ,
6670 args:: ConfigSubCommand :: Set { input, what_if} => {
71+ debug ! ( "Set input: {input}, what_if: {what_if}" ) ;
6772 let mut reg_helper = match RegistryHelper :: new ( & input) {
6873 Ok ( reg_helper) => reg_helper,
6974 Err ( err) => {
70- eprintln ! ( "Error: {err}" ) ;
75+ error ! ( "{err}" ) ;
7176 exit ( EXIT_INVALID_INPUT ) ;
7277 }
7378 } ;
@@ -82,23 +87,24 @@ fn main() {
8287 }
8388 } ,
8489 Err ( err) => {
85- eprintln ! ( "Error: {err}" ) ;
90+ error ! ( "{err}" ) ;
8691 exit ( EXIT_REGISTRY_ERROR ) ;
8792 }
8893 }
8994 } ,
9095 args:: ConfigSubCommand :: Delete { input} => {
96+ debug ! ( "Delete input: {input}" ) ;
9197 let reg_helper = match RegistryHelper :: new ( & input) {
9298 Ok ( reg_helper) => reg_helper,
9399 Err ( err) => {
94- eprintln ! ( "Error: {err}" ) ;
100+ error ! ( "{err}" ) ;
95101 exit ( EXIT_INVALID_INPUT ) ;
96102 }
97103 } ;
98104 match reg_helper. remove ( ) {
99105 Ok ( ( ) ) => { } ,
100106 Err ( err) => {
101- eprintln ! ( "Error: {err}" ) ;
107+ error ! ( "{err}" ) ;
102108 exit ( EXIT_REGISTRY_ERROR ) ;
103109 }
104110 }
@@ -115,6 +121,24 @@ fn main() {
115121 exit ( EXIT_SUCCESS ) ;
116122}
117123
124+ pub fn enable_tracing ( ) {
125+ // default filter to trace level
126+ let filter = EnvFilter :: builder ( ) . with_default_directive ( LevelFilter :: TRACE . into ( ) ) . parse ( "" ) . unwrap_or_default ( ) ;
127+ let layer = tracing_subscriber:: fmt:: Layer :: default ( ) . with_writer ( std:: io:: stderr) ;
128+ let fmt = layer
129+ . with_ansi ( false )
130+ . with_level ( true )
131+ . with_line_number ( true )
132+ . json ( )
133+ . boxed ( ) ;
134+
135+ let subscriber = tracing_subscriber:: Registry :: default ( ) . with ( fmt) . with ( filter) ;
136+
137+ if tracing:: subscriber:: set_global_default ( subscriber) . is_err ( ) {
138+ eprintln ! ( "Unable to set global default tracing subscriber. Tracing is diabled." ) ;
139+ }
140+ }
141+
118142#[ cfg( debug_assertions) ]
119143fn check_debug ( ) {
120144 if env:: var ( "DEBUG_REGISTRY" ) . is_ok ( ) {
0 commit comments