Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sunnycmf/412d29383a068302a964 to your computer and use it in GitHub Desktop.
Save sunnycmf/412d29383a068302a964 to your computer and use it in GitHub Desktop.
<script type='text/javascript'>
$(function() {
Dashing.widget_base_dimensions = [307, 252]
Dashing.numColumns = 6
});
</script>
<% content_for :title do %>1080p dashboard<% end %>
<div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
<div data-id="git_next_milesone" data-view="Text" data-title="Next Milestone"
style="background-color:#333A52; padding-bottom: 70px"
></div>
<i class="icon-github icon-background"></i>
</li>
</ul>
</div>
#!/usr/bin/env ruby
require 'rest-client'
require 'json'
require 'date'
git_token = "YOUR-KEY-HERE"
git_owner = "OWNER"
git_project = "PROJECT"
SCHEDULER.every '10m', :first_in => 0 do |job|
uri = "https://api.github.com/repos/#{git_owner}/#{git_project}/milestones?access_token=#{git_token}"
puts "Getting #{uri}"
response = RestClient.get uri
milestones = JSON.parse(response.body, symbolize_names: true)
# Remove all the milestones with no due date, or where all the issues are closed.
milestones.select! { |milestone| !milestone[:due_on].nil? and (milestone[:open_issues] > 0) }
if milestones.length > 0
milestones.sort! { |a,b| a[:due_on] <=> b[:due_on] }
next_milestone = milestones.first
days_left = (Date.parse(next_milestone[:due_on]) - Date.today).to_i
if days_left > 0
due = "Due in #{days_left} days"
elsif days_left == 0
due = "Due today"
else
due = "Overdue by #{days_left.abs} days"
end
send_event('git_next_milesone', {
text: "#{next_milestone[:title] or 'Unnamed Milestone'}<br>#{due}",
moreinfo: "#{next_milestone[:open_issues]}/#{next_milestone[:open_issues] + next_milestone[:closed_issues]} issues remain"
})
else
# There are no milestones left with open issues.
send_event('git_next_milesone', {
text: "None",
moreinfo: ""
})
end
end # SCHEDULER

This will show your next GitHub milestone as a Dashing widget. Built on top of the Text widget.

To use:

  • Add the following to your gemfile:

  •   gem 'rest-client'
    
  • Replace the git_token, git_owner, and git_project in git-milestone.rb as appropriate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment