Skip to content

Instantly share code, notes, and snippets.

@jonahgeorge
Created February 17, 2016 22:51
Show Gist options
  • Select an option

  • Save jonahgeorge/218a992be7db2048b91c to your computer and use it in GitHub Desktop.

Select an option

Save jonahgeorge/218a992be7db2048b91c to your computer and use it in GitHub Desktop.
require "json"
require "open-uri"
url = "https://api.github.com/repos/jonahgeorge/paperbacks/commits"
commits = JSON.parse(open(url).read)
nodes = []
commits.each do |c|
c["parents"].each do |p|
nodes << "\"#{c["sha"]}\" -> \"#{p["sha"]}\";"
end
end
file = <<-DOT
digraph models_diagram {
edge [arrowhead=none];
#{nodes.join("\n")}
}
DOT
puts file
digraph models_diagram {
edge [arrowhead=none];
"f7b93045c158441b56dd2a62b0968f6d62bac267" -> "a5cd7f9d2a136042b712ef6bac199acc69a084ac";
"a5cd7f9d2a136042b712ef6bac199acc69a084ac" -> "dc347bb64613c1df839c81e1ac0a44492a0d52f4";
"dc347bb64613c1df839c81e1ac0a44492a0d52f4" -> "6f7c667a443404fbb1be6e53efe0019538f6955c";
"dc347bb64613c1df839c81e1ac0a44492a0d52f4" -> "fba913da14a261da4558ab48fc6a8538fbc760bb";
"fba913da14a261da4558ab48fc6a8538fbc760bb" -> "f506ce8b536d45f33f54701d608674f072f45a49";
"f506ce8b536d45f33f54701d608674f072f45a49" -> "243607853792e5d0b63839934bb35ae482a0e126";
"243607853792e5d0b63839934bb35ae482a0e126" -> "af1707f54b84160ac348b95442efc6330ed08293";
"af1707f54b84160ac348b95442efc6330ed08293" -> "f207ba8fb9a738d7d40ae2881a728907de6cd2f9";
"f207ba8fb9a738d7d40ae2881a728907de6cd2f9" -> "6f7c667a443404fbb1be6e53efe0019538f6955c";
"6f7c667a443404fbb1be6e53efe0019538f6955c" -> "ee3f9096b3c2b1ee671597914b948403d2444bb5";
"ee3f9096b3c2b1ee671597914b948403d2444bb5" -> "89e35429621d6fbca1c6879c4f1c7e0c4d59703c";
"89e35429621d6fbca1c6879c4f1c7e0c4d59703c" -> "7eb4f6def8b40b66c7f03a5bfafd877cc84fee7a";
"7eb4f6def8b40b66c7f03a5bfafd877cc84fee7a" -> "c12483bbd56a89614b87b923437ff47a3b71023b";
"c12483bbd56a89614b87b923437ff47a3b71023b" -> "b5e80e66a7413ffda520c6e353c733d06866648c";
"b5e80e66a7413ffda520c6e353c733d06866648c" -> "92a5b20874bb5aaaf5317d58aabde09039ccc662";
"92a5b20874bb5aaaf5317d58aabde09039ccc662" -> "40fbe6d4538bb0e54247a3f25a03e2f81eb23ae6";
"40fbe6d4538bb0e54247a3f25a03e2f81eb23ae6" -> "3df62a242a3105f6aaf9aac30a75778077115823";
"40fbe6d4538bb0e54247a3f25a03e2f81eb23ae6" -> "b096bf68836c5cb43764c19bfc463ec7d369662d";
"b096bf68836c5cb43764c19bfc463ec7d369662d" -> "3df62a242a3105f6aaf9aac30a75778077115823";
"3df62a242a3105f6aaf9aac30a75778077115823" -> "a069b868679523b37a3a7969d13d3e8b09e2f04b";
"3df62a242a3105f6aaf9aac30a75778077115823" -> "ec971001aa92ecd1a8a8c528a9767f682dca97c5";
"ec971001aa92ecd1a8a8c528a9767f682dca97c5" -> "89f0180d03e50afcb58e2ac21206494cd3764aa4";
"89f0180d03e50afcb58e2ac21206494cd3764aa4" -> "0266f450adc02df8f66a5d7ba495f2f948ca9723";
"0266f450adc02df8f66a5d7ba495f2f948ca9723" -> "0ef368afc3f50ffee6e78c2a852b832ed813e7c1";
"0ef368afc3f50ffee6e78c2a852b832ed813e7c1" -> "a069b868679523b37a3a7969d13d3e8b09e2f04b";
"a069b868679523b37a3a7969d13d3e8b09e2f04b" -> "2e87753641b52f4da2c2a6adecbc7006dcd7a6b3";
"2e87753641b52f4da2c2a6adecbc7006dcd7a6b3" -> "3a0fd1b86986a1853db6c39221921e2128d81597";
"2e87753641b52f4da2c2a6adecbc7006dcd7a6b3" -> "477dc01e38f918e29f5fd3df4bc14f216a47c25c";
"3a0fd1b86986a1853db6c39221921e2128d81597" -> "df5ff604404dd692c3d9f7c699a716ee0bed65c9";
"477dc01e38f918e29f5fd3df4bc14f216a47c25c" -> "df5ff604404dd692c3d9f7c699a716ee0bed65c9";
"477dc01e38f918e29f5fd3df4bc14f216a47c25c" -> "be96a128a3988061c6d891e07fc9b6d474392544";
"be96a128a3988061c6d891e07fc9b6d474392544" -> "df5ff604404dd692c3d9f7c699a716ee0bed65c9";
"df5ff604404dd692c3d9f7c699a716ee0bed65c9" -> "1049c07ec66bfefef266a42b64f1c961acc936f2";
"df5ff604404dd692c3d9f7c699a716ee0bed65c9" -> "9719eb4a96dcf834e9f13724411c1ec7bf5c7af3";
"9719eb4a96dcf834e9f13724411c1ec7bf5c7af3" -> "1049c07ec66bfefef266a42b64f1c961acc936f2";
"1049c07ec66bfefef266a42b64f1c961acc936f2" -> "a78b3b3e5381df40aef7b789b4c34d6b9b313502";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment