@@ -64,6 +64,22 @@ impl<'a> Generator<'a> {
64
64
} )
65
65
}
66
66
67
+ fn file_url ( & self , path : & Path ) -> String {
68
+ format ! (
69
+ "file:///{}/{}" ,
70
+ self . out_directory
71
+ . canonicalize( )
72
+ . unwrap_or_else( |_| self . out_directory. to_owned( ) )
73
+ . display( )
74
+ . to_string( )
75
+ . trim_start_matches( '/' )
76
+ . replace( ' ' , "%20" )
77
+ . replace( "\\ \\ ?\\ " , "" ) ,
78
+ path. display( )
79
+ )
80
+ . replace ( std:: path:: MAIN_SEPARATOR , "/" )
81
+ }
82
+
67
83
fn render ( & self ) -> Result < ( ) , Box < dyn Error > > {
68
84
// make sure our output directory exists
69
85
fs:: create_dir_all ( & self . out_directory ) ?;
@@ -103,16 +119,24 @@ impl<'a> Generator<'a> {
103
119
fn render_blog ( & self , blog : & Blog ) -> Result < ( ) , Box < dyn Error > > {
104
120
std:: fs:: create_dir_all ( self . out_directory . join ( blog. prefix ( ) ) ) ?;
105
121
106
- self . render_index ( blog) ?;
122
+ let path = self . render_index ( blog) ?;
123
+
124
+ println ! ( "{}: {}" , blog. title( ) , self . file_url( & path) ) ;
125
+
107
126
self . render_feed ( blog) ?;
108
127
self . render_releases_feed ( blog) ?;
109
- for post in blog. posts ( ) {
110
- self . render_post ( blog, post) ?;
128
+
129
+ for ( i, post) in blog. posts ( ) . iter ( ) . enumerate ( ) {
130
+ let path = self . render_post ( blog, post) ?;
131
+ if i == 0 {
132
+ println ! ( "└─ Latest post: {}\n " , self . file_url( & path) ) ;
133
+ }
111
134
}
135
+
112
136
Ok ( ( ) )
113
137
}
114
138
115
- fn render_index ( & self , blog : & Blog ) -> Result < ( ) , Box < dyn Error > > {
139
+ fn render_index ( & self , blog : & Blog ) -> Result < PathBuf , Box < dyn Error > > {
116
140
let other_blogs: Vec < _ > = self
117
141
. blogs
118
142
. iter ( )
@@ -132,11 +156,12 @@ impl<'a> Generator<'a> {
132
156
"other_blogs" : other_blogs,
133
157
"root" : blog. path_back_to_root( ) ,
134
158
} ) ;
135
- self . render_template ( blog. prefix ( ) . join ( "index.html" ) , "index" , data) ?;
136
- Ok ( ( ) )
159
+ let path = blog. prefix ( ) . join ( "index.html" ) ;
160
+ self . render_template ( & path, "index" , data) ?;
161
+ Ok ( path)
137
162
}
138
163
139
- fn render_post ( & self , blog : & Blog , post : & Post ) -> Result < ( ) , Box < dyn Error > > {
164
+ fn render_post ( & self , blog : & Blog , post : & Post ) -> Result < PathBuf , Box < dyn Error > > {
140
165
let path = blog
141
166
. prefix ( )
142
167
. join ( format ! ( "{:04}" , & post. year) )
@@ -156,8 +181,9 @@ impl<'a> Generator<'a> {
156
181
"root" : blog. path_back_to_root( ) . join( "../../../" ) ,
157
182
} ) ;
158
183
159
- self . render_template ( path. join ( filename) , & post. layout , data) ?;
160
- Ok ( ( ) )
184
+ let path = path. join ( filename) ;
185
+ self . render_template ( & path, & post. layout , data) ?;
186
+ Ok ( path)
161
187
}
162
188
163
189
fn render_feed ( & self , blog : & Blog ) -> Result < ( ) , Box < dyn Error > > {
0 commit comments