@@ -18,47 +18,52 @@ import (
1818
1919func RunBalance (cmd * cobra.Command , args []string ) {
2020 configPath , _ := cmd .Flags ().GetString ("config-path" )
21- executeBalance (configPath )
21+ if err := executeBalance (configPath ); err != nil {
22+ log := gologger .Get ()
23+ log .Error ().Err (err ).Msg ("Balance check failed" )
24+ }
2225}
2326
24- func executeBalance (configPath string ) {
27+ func executeBalance (configPath string ) error {
2528 log := gologger .Get ().With ().Str ("component" , "balance" ).Logger ()
2629
2730 ctx , cancel := context .WithTimeout (context .Background (), 30 * time .Second )
2831 defer cancel ()
2932
3033 cfg , walletAdapter , err := initializeWallet (configPath , log )
3134 if err != nil {
32- return // Error already logged in initializeWallet
35+ return err
3336 }
3437
35- displayTokenBalance (ctx , walletAdapter , cfg , log )
38+ if err := displayTokenBalance (ctx , walletAdapter , cfg , log ); err != nil {
39+ return err
40+ }
3641
3742 deviceID , err := getDeviceID (log )
3843 if err != nil {
39- return
44+ return err
4045 }
4146
42- displayStakeInfo (ctx , walletAdapter , cfg , deviceID , log )
47+ return displayStakeInfo (ctx , walletAdapter , cfg , deviceID , log )
4348}
4449
4550func initializeWallet (configPath string , log zerolog.Logger ) (* config.Config , * wallet.Adapter , error ) {
4651 configManager := config .NewConfigManager (configPath )
4752 cfg , err := configManager .GetConfig ()
4853 if err != nil {
49- log .Fatal ().Err (err ).Msg ("Failed to load config" )
54+ log .Error ().Err (err ).Msg ("Failed to load config" )
5055 return nil , nil , err
5156 }
5257
5358 keystoreAdapter , err := keystore .NewAdapter (nil )
5459 if err != nil {
55- log .Fatal ().Err (err ).Msg ("Failed to create keystore" )
60+ log .Error ().Err (err ).Msg ("Failed to create keystore" )
5661 return nil , nil , err
5762 }
5863
5964 privateKey , err := keystoreAdapter .LoadPrivateKey ()
6065 if err != nil {
61- log .Fatal ().Err (err ).Msg ("No private key found - please authenticate first using 'parity auth'" )
66+ log .Error ().Err (err ).Msg ("No private key found - please authenticate first using 'parity auth'" )
6267 return nil , nil , err
6368 }
6469
@@ -70,76 +75,81 @@ func initializeWallet(configPath string, log zerolog.Logger) (*config.Config, *w
7075 StakeAddress : common .HexToAddress (cfg .BlockchainNetwork .StakeWalletAddress ),
7176 })
7277 if err != nil {
73- log .Fatal ().Err (err ).Msg ("Failed to create Ethereum client" )
78+ log .Error ().Err (err ).Msg ("Failed to create Ethereum client" )
7479 return nil , nil , err
7580 }
7681
7782 return cfg , walletAdapter , nil
7883}
7984
80- func displayTokenBalance (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , log zerolog.Logger ) {
85+ func displayTokenBalance (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , log zerolog.Logger ) error {
8186 token , err := walletAdapter .NewParityToken (common .HexToAddress (cfg .BlockchainNetwork .TokenAddress ))
8287 if err != nil {
83- log .Fatal ().Err (err ).Msg ("Failed to create token contract" )
84- return
88+ log .Error ().Err (err ).Msg ("Failed to create token contract" )
89+ return err
8590 }
8691
8792 tokenBalance , err := walletAdapter .GetTokenBalance (ctx , token , walletAdapter .GetAddress ())
8893 if err != nil {
8994 select {
9095 case <- ctx .Done ():
91- log .Fatal ().Err (ctx .Err ()).Msg ("Operation timed out while getting token balance" )
96+ log .Error ().Err (ctx .Err ()).Msg ("Operation timed out while getting token balance" )
97+ return ctx .Err ()
9298 default :
93- log .Fatal ().Err (err ).Msg ("Failed to get token balance" )
99+ log .Error ().Err (err ).Msg ("Failed to get token balance" )
100+ return err
94101 }
95- return
96102 }
97103
98104 log .Info ().
99105 Str ("wallet_address" , walletAdapter .GetAddress ().Hex ()).
100106 Str ("balance" , tokenBalance .String ()+ " " + cfg .BlockchainNetwork .TokenSymbol ).
101107 Msg ("Wallet token balance" )
108+
109+ return nil
102110}
103111
104112func getDeviceID (log zerolog.Logger ) (string , error ) {
105113 deviceIDManager := deviceid .NewManager (deviceid.Config {})
106114 deviceID , err := deviceIDManager .VerifyDeviceID ()
107115 if err != nil {
108- log .Fatal ().Err (err ).Msg ("Failed to get device ID" )
116+ log .Error ().Err (err ).Msg ("Failed to get device ID" )
109117 return "" , err
110118 }
111119 return deviceID , nil
112120}
113121
114- func displayStakeInfo (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , deviceID string , log zerolog.Logger ) {
122+ func displayStakeInfo (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , deviceID string , log zerolog.Logger ) error {
115123 stakeWallet , err := walletAdapter .NewStakeWallet (
116124 common .HexToAddress (cfg .BlockchainNetwork .StakeWalletAddress ),
117125 common .HexToAddress (cfg .BlockchainNetwork .TokenAddress ),
118126 )
119127 if err != nil {
120- log .Fatal ().Err (err ).Msg ("Failed to create stake wallet contract" )
121- return
128+ log .Error ().Err (err ).Msg ("Failed to create stake wallet contract" )
129+ return err
122130 }
123131
124132 stakeInfo , err := walletAdapter .GetStakeInfo (ctx , stakeWallet , deviceID )
125133 if err != nil {
126134 select {
127135 case <- ctx .Done ():
128- log .Fatal ().Err (ctx .Err ()).Msg ("Operation timed out while getting stake info" )
136+ log .Error ().Err (ctx .Err ()).Msg ("Operation timed out while getting stake info" )
137+ return ctx .Err ()
129138 default :
130- log .Fatal ().Err (err ).Msg ("Failed to get stake info" )
139+ log .Error ().Err (err ).Msg ("Failed to get stake info" )
140+ return err
131141 }
132- return
133142 }
134143
135144 if stakeInfo .Exists {
136- displayExistingStakeInfo (ctx , walletAdapter , cfg , stakeInfo , log )
145+ return displayExistingStakeInfo (ctx , walletAdapter , cfg , stakeInfo , log )
137146 } else {
138147 log .Info ().Msg ("No active stake found" )
148+ return nil
139149 }
140150}
141151
142- func displayExistingStakeInfo (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , stakeInfo walletsdk.StakeInfo , log zerolog.Logger ) {
152+ func displayExistingStakeInfo (ctx context.Context , walletAdapter * wallet.Adapter , cfg * config.Config , stakeInfo walletsdk.StakeInfo , log zerolog.Logger ) error {
143153 log .Info ().
144154 Str ("amount" , stakeInfo .Amount .String ()+ " PRTY" ).
145155 Str ("device_id" , stakeInfo .DeviceID ).
@@ -148,23 +158,26 @@ func displayExistingStakeInfo(ctx context.Context, walletAdapter *wallet.Adapter
148158
149159 token , err := walletAdapter .NewParityToken (common .HexToAddress (cfg .BlockchainNetwork .TokenAddress ))
150160 if err != nil {
151- log .Fatal ().Err (err ).Msg ("Failed to create token contract" )
152- return
161+ log .Error ().Err (err ).Msg ("Failed to create token contract" )
162+ return err
153163 }
154164
155165 contractBalance , err := walletAdapter .GetTokenBalance (ctx , token , common .HexToAddress (cfg .BlockchainNetwork .StakeWalletAddress ))
156166 if err != nil {
157167 select {
158168 case <- ctx .Done ():
159- log .Fatal ().Err (ctx .Err ()).Msg ("Operation timed out while getting contract balance" )
169+ log .Error ().Err (ctx .Err ()).Msg ("Operation timed out while getting contract balance" )
170+ return ctx .Err ()
160171 default :
161- log .Fatal ().Err (err ).Msg ("Failed to get contract balance" )
172+ log .Error ().Err (err ).Msg ("Failed to get contract balance" )
173+ return err
162174 }
163- return
164175 }
165176
166177 log .Info ().
167178 Str ("balance" , contractBalance .String ()+ " PRTY" ).
168179 Str ("contract_address" , cfg .BlockchainNetwork .StakeWalletAddress ).
169180 Msg ("Contract token balance" )
181+
182+ return nil
170183}
0 commit comments