11class ReleasePostGenerator < Jekyll ::Generator
22 def generate ( site )
3+
4+ release_blog_templates = { }
5+ site . data [ "translations" ] . each do |lang , _ |
6+ release_blog_templates [ lang ] = [
7+ File . exists? ( File . join ( site . source , "_includes" , "posts" , lang , "release-blog-major.md" ) ) ,
8+ File . exists? ( File . join ( site . source , "_includes" , "posts" , lang , "release-blog-minor.md" ) ) ,
9+ ]
10+ end
11+
312 site . documents . each do |page |
413 next unless page . data . key? ( "release" )
514
@@ -21,6 +30,41 @@ def generate(site)
2130
2231 # Wrap the page with the download include and githubify
2332 page . content = "{% include download.html %}\n {% githubify https://github.com/bitcoin/bitcoin %}\n #{ page . content } \n {% endgithubify %}"
33+
34+ # Generate the release blog post if we have the templates
35+ is_major = version [ 1 ] == 0
36+ if version [ 0 ] >= 28 and ( ( is_major and release_blog_templates [ lang ] [ 0 ] ) or ( not is_major and release_blog_templates [ lang ] [ 1 ] ) )
37+ release_blog_id = "#{ lang } -blog-release-#{ version_str } "
38+ if not site . posts . docs . find { |post | post . data [ "id" ] == release_blog_id }
39+ date = page . data [ "date" ]
40+ release_blog = Jekyll ::Document . new ( "_posts/#{ lang } /posts/#{ date . strftime ( '%F' ) } -release-#{ version_str } .md" , site : site , collection : site . posts )
41+ release_blog . data [ "date" ] = date
42+ release_blog . data [ "name" ] = "blog-release-#{ version_str } "
43+ release_blog . data [ "id" ] = release_blog_id
44+ release_blog . data [ "lang" ] = lang
45+ release_blog . data [ "type" ] = "posts"
46+ release_blog . data [ "layout" ] = "post"
47+ release_blog . data [ "version" ] = 1
48+ release_blog . data [ "announcement" ] = 1
49+ release_blog . data [ "excerpt" ] = page . data [ "excerpt" ]
50+ release_blog . data [ "release_version" ] = version_str
51+ release_blog . data [ "title" ] = site . data [ "translations" ] [ lang ] [ 'released' ] . sub ( "%version" , version_str )
52+ release_blog . data [ "permalink" ] = "/#{ lang } /#{ date . strftime ( '%Y/%m/%d' ) } /release-#{ version_str } /"
53+
54+ if is_major and release_blog_templates [ lang ] [ 0 ]
55+ release_blog . data [ "eol_version" ] = "#{ version [ 0 ] - 3 } .x"
56+ release_blog . data [ "old_version" ] = "#{ version [ 0 ] - 1 } .x"
57+
58+ release_blog . content = "{% include posts/#{ lang } /release-blog-major.md %}"
59+ elsif not is_major and release_blog_templates [ lang ] [ 1 ]
60+ release_blog . content = "{% include posts/#{ lang } /release-blog-minor.md %}"
61+ end
62+
63+ site . posts . docs << release_blog
64+ end
65+ end
2466 end
67+
68+ site . posts . docs . sort_by! ( &:date )
2569 end
2670end
0 commit comments