@@ -11,7 +11,8 @@ use clap::Parser;
11
11
use registry_helper:: RegistryHelper ;
12
12
use schemars:: schema_for;
13
13
use std:: process:: exit;
14
-
14
+ use tracing:: { debug, error} ;
15
+ use tracing_subscriber:: { filter:: LevelFilter , prelude:: __tracing_subscriber_SubscriberExt, EnvFilter , Layer } ;
15
16
use crate :: config:: Registry ;
16
17
17
18
mod args;
@@ -28,27 +29,30 @@ fn main() {
28
29
#[ cfg( debug_assertions) ]
29
30
check_debug ( ) ;
30
31
32
+ enable_tracing ( ) ;
33
+
31
34
let args = Arguments :: parse ( ) ;
32
35
match args. subcommand {
33
36
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}" ) ;
35
38
} ,
36
39
args:: SubCommand :: Set { key_path, value } => {
37
- eprintln ! ( "Set key_path: {key_path}, value: {value}" ) ;
40
+ debug ! ( "Set key_path: {key_path}, value: {value}" ) ;
38
41
} ,
39
42
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}" ) ;
41
44
} ,
42
45
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:?}" ) ;
44
47
} ,
45
48
args:: SubCommand :: Config { subcommand } => {
46
49
match subcommand {
47
50
args:: ConfigSubCommand :: Get { input} => {
51
+ debug ! ( "Get input: {input}" ) ;
48
52
let reg_helper = match RegistryHelper :: new ( & input) {
49
53
Ok ( reg_helper) => reg_helper,
50
54
Err ( err) => {
51
- eprintln ! ( "Error: {err}" ) ;
55
+ error ! ( "{err}" ) ;
52
56
exit ( EXIT_INVALID_INPUT ) ;
53
57
}
54
58
} ;
@@ -58,16 +62,17 @@ fn main() {
58
62
println ! ( "{json}" ) ;
59
63
} ,
60
64
Err ( err) => {
61
- eprintln ! ( "Error: {err}" ) ;
65
+ error ! ( "{err}" ) ;
62
66
exit ( EXIT_REGISTRY_ERROR ) ;
63
67
}
64
68
}
65
69
} ,
66
70
args:: ConfigSubCommand :: Set { input, what_if} => {
71
+ debug ! ( "Set input: {input}, what_if: {what_if}" ) ;
67
72
let mut reg_helper = match RegistryHelper :: new ( & input) {
68
73
Ok ( reg_helper) => reg_helper,
69
74
Err ( err) => {
70
- eprintln ! ( "Error: {err}" ) ;
75
+ error ! ( "{err}" ) ;
71
76
exit ( EXIT_INVALID_INPUT ) ;
72
77
}
73
78
} ;
@@ -82,23 +87,24 @@ fn main() {
82
87
}
83
88
} ,
84
89
Err ( err) => {
85
- eprintln ! ( "Error: {err}" ) ;
90
+ error ! ( "{err}" ) ;
86
91
exit ( EXIT_REGISTRY_ERROR ) ;
87
92
}
88
93
}
89
94
} ,
90
95
args:: ConfigSubCommand :: Delete { input} => {
96
+ debug ! ( "Delete input: {input}" ) ;
91
97
let reg_helper = match RegistryHelper :: new ( & input) {
92
98
Ok ( reg_helper) => reg_helper,
93
99
Err ( err) => {
94
- eprintln ! ( "Error: {err}" ) ;
100
+ error ! ( "{err}" ) ;
95
101
exit ( EXIT_INVALID_INPUT ) ;
96
102
}
97
103
} ;
98
104
match reg_helper. remove ( ) {
99
105
Ok ( ( ) ) => { } ,
100
106
Err ( err) => {
101
- eprintln ! ( "Error: {err}" ) ;
107
+ error ! ( "{err}" ) ;
102
108
exit ( EXIT_REGISTRY_ERROR ) ;
103
109
}
104
110
}
@@ -115,6 +121,24 @@ fn main() {
115
121
exit ( EXIT_SUCCESS ) ;
116
122
}
117
123
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
+
118
142
#[ cfg( debug_assertions) ]
119
143
fn check_debug ( ) {
120
144
if env:: var ( "DEBUG_REGISTRY" ) . is_ok ( ) {
0 commit comments