Skip to content

Instantly share code, notes, and snippets.

@kennyadsl
Forked from jhawthorn/changelog_eol_html.rb
Created July 18, 2018 20:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kennyadsl/6a0abac77e3ee42a0df17e0765fc7ea3 to your computer and use it in GitHub Desktop.
Save kennyadsl/6a0abac77e3ee42a0df17e0765fc7ea3 to your computer and use it in GitHub Desktop.
require 'date'
data = File.read("CHANGELOG.md")
versions = []
data.scan(/## Solidus ([0-9\.]+)\.0 \(([0-9]+)-([0-9]+)-([0-9]+)\)/) do
version = $1
release_date = Date.new($2.to_i, $3.to_i, $4.to_i)
eol = [release_date >> 18, Date.new(2018, 05, 05)].max
eol = release_date >> 18
versions << [version, release_date, eol]
end
def js_date(date)
"new Date(#{date.year}, #{date.month}, #{date.day})"
end
if true
format = "| %7s | %11s | %11s |"
heading = format % (%w[Version] + %w[Release EOL].map{|x| x.center(11) })
sep = heading.tr('|', '+').gsub(/[^+]/, '-')
puts sep
puts heading
puts sep
versions.reverse.each do |version, release_date, eol|
puts format % [version, release_date, eol]
end
puts sep
else
rows = []
versions.reverse.each do |version, release_date, eol|
rows << "['#{version}', #{js_date(release_date)}, #{js_date(eol << 1)}]"
end
puts <<HTML
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<div id="timeline" style="height: 800px;"></div>
<script>
google.charts.load('current', {'packages':['timeline']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var container = document.getElementById('timeline');
var chart = new google.visualization.Timeline(container);
var dataTable = new google.visualization.DataTable();
dataTable.addColumn({ type: 'string', id: 'Version' });
dataTable.addColumn({ type: 'date', id: 'Start' });
dataTable.addColumn({ type: 'date', id: 'End' });
dataTable.addRows([#{rows.join(",")}]);
chart.draw(dataTable);
}
</script>
HTML
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment