1- use catalyst_toolbox:: recovery:: { Replay , ReplayError } ;
2- use chain_core:: {
3- packer:: Codec ,
4- property:: { Deserialize , ReadError } ,
5- } ;
1+ use catalyst_toolbox:: recovery:: Replay ;
2+ use chain_core:: { packer:: Codec , property:: Deserialize } ;
63use chain_impl_mockchain:: block:: Block ;
7- use jcli_lib :: utils :: {
8- output_file :: { Error as OutputFileError , OutputFile } ,
9- output_format :: { Error as OutputFormatError , OutputFormat } ,
4+ use color_eyre :: {
5+ eyre :: { bail , Context } ,
6+ Report ,
107} ;
8+ use jcli_lib:: utils:: { output_file:: OutputFile , output_format:: OutputFormat } ;
119
1210use std:: path:: PathBuf ;
1311
1412use reqwest:: Url ;
1513use structopt:: StructOpt ;
1614
17- #[ allow( clippy:: large_enum_variant) ]
18- #[ derive( thiserror:: Error , Debug ) ]
19- pub enum Error {
20- #[ error( transparent) ]
21- Replay ( #[ from] ReplayError ) ,
22-
23- #[ error( transparent) ]
24- Io ( #[ from] std:: io:: Error ) ,
25-
26- #[ error( transparent) ]
27- Request ( #[ from] reqwest:: Error ) ,
28-
29- #[ error( transparent) ]
30- Serialization ( #[ from] serde_json:: Error ) ,
31-
32- #[ error( transparent) ]
33- OutputFile ( #[ from] OutputFileError ) ,
34-
35- #[ error( transparent) ]
36- OutputFormat ( #[ from] OutputFormatError ) ,
37-
38- #[ error( "Block0 should be provided either from a path (block0-path) or an url (block0-url)" ) ]
39- Block0Unavailable ,
40-
41- #[ error( "Could not load block0" ) ]
42- Block0Loading ( #[ source] ReadError ) ,
43- }
44-
4515/// Recover the tally from fragment log files and the initial preloaded block0 binary file.
4616#[ derive( StructOpt ) ]
4717#[ structopt( rename_all = "kebab" ) ]
@@ -69,18 +39,18 @@ pub struct ReplayCli {
6939 verbose : usize ,
7040}
7141
72- fn read_block0 ( path : PathBuf ) -> Result < Block , Error > {
42+ fn read_block0 ( path : PathBuf ) -> Result < Block , Report > {
7343 let reader = std:: fs:: File :: open ( path) ?;
74- Block :: deserialize ( & mut Codec :: new ( reader) ) . map_err ( Error :: Block0Loading )
44+ Block :: deserialize ( & mut Codec :: new ( reader) ) . context ( "block0 loading" )
7545}
7646
77- fn load_block0_from_url ( url : Url ) -> Result < Block , Error > {
47+ fn load_block0_from_url ( url : Url ) -> Result < Block , Report > {
7848 let block0_body = reqwest:: blocking:: get ( url) ?. bytes ( ) ?;
79- Block :: deserialize ( & mut Codec :: new ( & block0_body[ ..] ) ) . map_err ( Error :: Block0Loading )
49+ Block :: deserialize ( & mut Codec :: new ( & block0_body[ ..] ) ) . context ( "block0 loading" )
8050}
8151
8252impl ReplayCli {
83- pub fn exec ( self ) -> Result < ( ) , Error > {
53+ pub fn exec ( self ) -> Result < ( ) , Report > {
8454 let Self {
8555 block0_path,
8656 block0_url,
@@ -96,7 +66,7 @@ impl ReplayCli {
9666 } else if let Some ( url) = block0_url {
9767 load_block0_from_url ( url) ?
9868 } else {
99- return Err ( Error :: Block0Unavailable ) ;
69+ bail ! ( "block0 unavailable" ) ;
10070 } ;
10171
10272 let replay = Replay :: new ( block0, logs_path, output, output_format) ;
0 commit comments