Skip to content

Commit 1607931

Browse files
authored
Merge pull request #981 from m-ou-se/show-links
Show links to blogs and their latest post.
2 parents 3f91948 + 095a454 commit 1607931

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

src/main.rs

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,22 @@ impl<'a> Generator<'a> {
6464
})
6565
}
6666

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+
6783
fn render(&self) -> Result<(), Box<dyn Error>> {
6884
// make sure our output directory exists
6985
fs::create_dir_all(&self.out_directory)?;
@@ -103,16 +119,24 @@ impl<'a> Generator<'a> {
103119
fn render_blog(&self, blog: &Blog) -> Result<(), Box<dyn Error>> {
104120
std::fs::create_dir_all(self.out_directory.join(blog.prefix()))?;
105121

106-
self.render_index(blog)?;
122+
let path = self.render_index(blog)?;
123+
124+
println!("{}: {}", blog.title(), self.file_url(&path));
125+
107126
self.render_feed(blog)?;
108127
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+
}
111134
}
135+
112136
Ok(())
113137
}
114138

115-
fn render_index(&self, blog: &Blog) -> Result<(), Box<dyn Error>> {
139+
fn render_index(&self, blog: &Blog) -> Result<PathBuf, Box<dyn Error>> {
116140
let other_blogs: Vec<_> = self
117141
.blogs
118142
.iter()
@@ -132,11 +156,12 @@ impl<'a> Generator<'a> {
132156
"other_blogs": other_blogs,
133157
"root": blog.path_back_to_root(),
134158
});
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)
137162
}
138163

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>> {
140165
let path = blog
141166
.prefix()
142167
.join(format!("{:04}", &post.year))
@@ -156,8 +181,9 @@ impl<'a> Generator<'a> {
156181
"root": blog.path_back_to_root().join("../../../"),
157182
});
158183

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)
161187
}
162188

163189
fn render_feed(&self, blog: &Blog) -> Result<(), Box<dyn Error>> {

0 commit comments

Comments
 (0)