From 511718e97397e64b6a813229394e1a9acb0c5e71 Mon Sep 17 00:00:00 2001 From: Ufuk Kayserilioglu Date: Mon, 16 Mar 2015 14:55:18 +0200 Subject: [PATCH] Add digest to theme images to not keep rebuilding them The digest is based on the colors of theme, so will change when the colors change --- lib/screenshot.rb | 28 +++++++++++++----- lib/screenshot_generator.rb | 2 +- ...gine-78c77bed831d7972c590f9bd03e152d8.png} | Bin 13422 -> 13422 bytes ...dark-75cab375f85855ef921fb80f9a061782.png} | Bin 13127 -> 13127 bytes ...ight-a46cf66777c2c54503e63b00d9082f43.png} | Bin 13000 -> 13000 bytes ...ight-71ae07518174786bfe2fb9ab5a9e83ba.png} | Bin 12895 -> 12895 bytes ...mint-2fddb05d1683177eb4fb68ee4120e5e7.png} | Bin 13408 -> 13408 bytes ...trus-aabf89160991190ec0315e2a39ea76fa.png} | Bin 12730 -> 12730 bytes ...cean-e2d1eca6db4cc8a78abcfce1ebf50f5e.png} | Bin 12993 -> 12993 bytes ...hoth-974a7d725a04044a85c116f730e221b0.png} | Bin 13156 -> 13156 bytes ..._bar-d19b30d5e993056af7bf8fd82ff84ccd.png} | Bin 12463 -> 12463 bytes ...okai-00cd3d1eebb53928d87e47b0e9239b51.png} | Bin 13171 -> 13171 bytes ...ment-7c8301d46a6d99fd5136c0ecbd55f631.png} | Bin 13107 -> 13107 bytes ...chin-bb801cd911b4e1f3f0f951dce01805d7.png} | Bin 13447 -> 13447 bytes ...ized-3c81e712d0f0721fb6664f3946d5f15b.png} | Bin 12834 -> 12834 bytes ...dark-5a4cc5f4d03c3c1e33846234f789fb95.png} | Bin 13472 -> 13472 bytes ...dian-cab221058b73795c923679a2f3b3e6ad.png} | Bin 12513 -> 12513 bytes ...rast-e6e00e4c82364b53023d3b5fda330476.png} | Bin 12233 -> 12233 bytes ...raze-e8ab77731821d3102c28ccefd6a10cd7.png} | Bin 10494 -> 10494 bytes ...tron-b10d94434b0d041f447eb08564007304.png} | Bin 13015 -> 13015 bytes ...mein-38d4677962273b78f31b9a573890be96.png} | Bin 12851 -> 12851 bytes ...gman-9fa5565d625a1e75be23738d64e056c2.png} | Bin 13005 -> 13005 bytes ...hard-c12b3ea651f9389a50450ce93c2dba97.png} | Bin 13259 -> 13259 bytes source/index.html.erb | 3 +- 24 files changed, 23 insertions(+), 10 deletions(-) rename source/images/theme/{aubergine.png => aubergine-78c77bed831d7972c590f9bd03e152d8.png} (99%) rename source/images/theme/{base16_eighties_dark.png => base16_eighties_dark-75cab375f85855ef921fb80f9a061782.png} (99%) rename source/images/theme/{base16_eighties_light.png => base16_eighties_light-a46cf66777c2c54503e63b00d9082f43.png} (99%) rename source/images/theme/{base16_tomorrow_night.png => base16_tomorrow_night-71ae07518174786bfe2fb9ab5a9e83ba.png} (99%) rename source/images/theme/{choco_mint.png => choco_mint-2fddb05d1683177eb4fb68ee4120e5e7.png} (99%) rename source/images/theme/{citrus.png => citrus-aabf89160991190ec0315e2a39ea76fa.png} (99%) rename source/images/theme/{digitalocean.png => digitalocean-e2d1eca6db4cc8a78abcfce1ebf50f5e.png} (99%) rename source/images/theme/{hoth.png => hoth-974a7d725a04044a85c116f730e221b0.png} (99%) rename source/images/theme/{juice_bar.png => juice_bar-d19b30d5e993056af7bf8fd82ff84ccd.png} (99%) rename source/images/theme/{monokai.png => monokai-00cd3d1eebb53928d87e47b0e9239b51.png} (99%) rename source/images/theme/{monument.png => monument-7c8301d46a6d99fd5136c0ecbd55f631.png} (99%) rename source/images/theme/{ochin.png => ochin-bb801cd911b4e1f3f0f951dce01805d7.png} (99%) rename source/images/theme/{solarized.png => solarized-3c81e712d0f0721fb6664f3946d5f15b.png} (99%) rename source/images/theme/{solarized_dark.png => solarized_dark-5a4cc5f4d03c3c1e33846234f789fb95.png} (99%) rename source/images/theme/{son_of_obsidian.png => son_of_obsidian-cab221058b73795c923679a2f3b3e6ad.png} (99%) rename source/images/theme/{stark_contrast.png => stark_contrast-e6e00e4c82364b53023d3b5fda330476.png} (99%) rename source/images/theme/{summer_craze.png => summer_craze-e8ab77731821d3102c28ccefd6a10cd7.png} (99%) rename source/images/theme/{tron.png => tron-b10d94434b0d041f447eb08564007304.png} (99%) rename source/images/theme/{wamein.png => wamein-38d4677962273b78f31b9a573890be96.png} (99%) rename source/images/theme/{wegman.png => wegman-9fa5565d625a1e75be23738d64e056c2.png} (99%) rename source/images/theme/{work_hard.png => work_hard-c12b3ea651f9389a50450ce93c2dba97.png} (99%) diff --git a/lib/screenshot.rb b/lib/screenshot.rb index bde61ec..f3ec439 100644 --- a/lib/screenshot.rb +++ b/lib/screenshot.rb @@ -5,7 +5,7 @@ require 'mini_magick' class Screenshot include Capybara::DSL - attr_accessor :theme, :theme_name + attr_accessor :theme def self.prepare Capybara.register_driver :poltergeist do |app| @@ -19,30 +19,42 @@ class Screenshot end end - def initialize(theme_name) - @theme_name = theme_name - @theme = theme_name.parameterize.underscore + def initialize(theme) + @theme = OpenStruct.new(theme.merge( + slug: theme[:name].parameterize.underscore, + digest: Digest::MD5.new.hexdigest(theme[:colors]) + )) end def generate_theme_image - puts "Generating image for theme #{theme_name}" + if File.exist? target_file + puts "Image for theme #{theme.name} already exists" + return + end + + puts "Generating image for theme #{theme.name}" visit '/' - within ".theme_#{theme}" do + within ".theme_#{theme.slug}" do choose 'sidebar_theme_rd' end sleep 1 - file = Tempfile.new([theme, ".png"]) + + file = Tempfile.new([theme.slug, ".png"]) begin page.save_screenshot(file.path, full: true) MiniMagick::Tool::Convert.new do |convert| convert << file.path convert.crop '220x220+0+0' - convert << "source/images/theme/#{theme}.png" + convert << target_file end ensure file.close file.unlink end end + + def target_file + "source/images/theme/#{theme.slug}-#{theme.digest}.png" + end end \ No newline at end of file diff --git a/lib/screenshot_generator.rb b/lib/screenshot_generator.rb index cb64691..5d17356 100644 --- a/lib/screenshot_generator.rb +++ b/lib/screenshot_generator.rb @@ -9,7 +9,7 @@ class ScreenshotGenerator < ::Middleman::Extension Screenshot.prepare data = YAML.load_file('data/themes.yml') data.each do |theme| - Screenshot.new(theme[:name]).generate_theme_image + Screenshot.new(theme).generate_theme_image end puts "Hello World" # builder.run './my_deploy_script.sh' diff --git a/source/images/theme/aubergine.png b/source/images/theme/aubergine-78c77bed831d7972c590f9bd03e152d8.png similarity index 99% rename from source/images/theme/aubergine.png rename to source/images/theme/aubergine-78c77bed831d7972c590f9bd03e152d8.png index 64cca93db4e732f5133d8ba44ddb8bcf25ece97f..fd98984c160d06d2b5dd3cec56663ed04443510b 100644 GIT binary patch delta 55 zcmaEt@h)S7k_o@5v6ZozwtmdKI;Vst0M#cC AsQ>@~ diff --git a/source/images/theme/base16_eighties_dark.png b/source/images/theme/base16_eighties_dark-75cab375f85855ef921fb80f9a061782.png similarity index 99% rename from source/images/theme/base16_eighties_dark.png rename to source/images/theme/base16_eighties_dark-75cab375f85855ef921fb80f9a061782.png index 2fda5dc2182e2c064b7b6e122f69b0037f598193..ac5935d86bd06cb88e8a68d62b5d7182704c87c7 100644 GIT binary patch delta 55 zcmX?}c06svZzFzFBP&x&Z381K0|Ut~KNd~qGFFmC63bZWAjbd%p00i_>zopr010gn A$N&HU delta 55 zcmX?}c06svZzFzVb1Op&Z381K0|V30Kd&cq87oO6iMepNgfjqvr>mdKI;Vst0Qhnc A1^@s6 diff --git a/source/images/theme/base16_eighties_light.png b/source/images/theme/base16_eighties_light-a46cf66777c2c54503e63b00d9082f43.png similarity index 99% rename from source/images/theme/base16_eighties_light.png rename to source/images/theme/base16_eighties_light-a46cf66777c2c54503e63b00d9082f43.png index 4da15289f0cf3a051dda23a53674a91a33e65297..f7d133941bb21b5ba691ebcd62e44c85143a1d83 100644 GIT binary patch delta 55 zcmX?+dLng0jS;`8k(H^rwtmdKI;Vst0Q#j6 AkpKVy delta 55 zcmX?+dLng0jS;`Gxs{=rwtFVdQ&MBb@0Nr&D AO8@`> diff --git a/source/images/theme/base16_tomorrow_night.png b/source/images/theme/base16_tomorrow_night-71ae07518174786bfe2fb9ab5a9e83ba.png similarity index 99% rename from source/images/theme/base16_tomorrow_night.png rename to source/images/theme/base16_tomorrow_night-71ae07518174786bfe2fb9ab5a9e83ba.png index f8128b12f788903f559abf288f907fec2c04a0af..8b6378becfe624f65850372d7122e8fa7d16f5e7 100644 GIT binary patch delta 55 ycmcbgazAB*uo1thv6X>=wt*3d^t+)wS;@@9~qBjFhC2#2(fAKV|>|Pgg&ebxsLQ0OOJn AsQ>@~ diff --git a/source/images/theme/choco_mint.png b/source/images/theme/choco_mint-2fddb05d1683177eb4fb68ee4120e5e7.png similarity index 99% rename from source/images/theme/choco_mint.png rename to source/images/theme/choco_mint-2fddb05d1683177eb4fb68ee4120e5e7.png index 93e2fc3105758d89f03da1cf3ca7ef1d64794c88..8c8d4ed01a6ea375dbcbfe5d15b6bbec97cd6ef4 100644 GIT binary patch delta 55 zcmaEm@gQS^hzY-`v6X?bwt-Pgg&ebxsLQ0N|Gp AD*ylh delta 55 zcmaEm@gQS^hzY;3xs{QTwtzopr0Qhhb AKL7v# delta 55 zcmdm$yeoM_o*}=nxs{Qjwt2_nyfuMoQ91VjSB31`I&p>FVdQ&MBb@0OouT As{jB1 delta 55 zcmX?@dN6fEsS&@ixs{QLwtzopr0Q^wtmdKI;Vst0N`Q} AB>(^b diff --git a/source/images/theme/monokai.png b/source/images/theme/monokai-00cd3d1eebb53928d87e47b0e9239b51.png similarity index 99% rename from source/images/theme/monokai.png rename to source/images/theme/monokai-00cd3d1eebb53928d87e47b0e9239b51.png index ecc0eda0403adc064bb980ec75c52ccc5d7851a6..c87277558c67f7bc9dae8568b69394690ee20f79 100644 GIT binary patch delta 55 zcmeyI_Bm~Xx-q}0v6X?PwtcRj7p00i_>zopr01iqK AM*si- delta 55 zcmeyI_Bm~Xx-q}8xs{Qnwtzopr0PcYh A?EnA( delta 55 zcmZ3Gxgc{xhzY;3xs|c0wtmdKI;Vst0OjBh A-2eap delta 55 zcmaEu_%Lz9R0Dovb1P#rZ381K0|RychSQUm7$`|2iG>MSlrsQmdKI;Vst0P3a> A-v9sr diff --git a/source/images/theme/stark_contrast.png b/source/images/theme/stark_contrast-e6e00e4c82364b53023d3b5fda330476.png similarity index 99% rename from source/images/theme/stark_contrast.png rename to source/images/theme/stark_contrast-e6e00e4c82364b53023d3b5fda330476.png index 07c0caa4c1e1817e43596feb363cbc374d1b1566..3e112ae6ce68a4448e9e2b84853dbea8dc88bb86 100644 GIT binary patch delta 55 zcmX>Ze=>eUtvZe=>eUtvTVJYD@<);T3K0RRf7 B5gPyi diff --git a/source/images/theme/tron.png b/source/images/theme/tron-b10d94434b0d041f447eb08564007304.png similarity index 99% rename from source/images/theme/tron.png rename to source/images/theme/tron-b10d94434b0d041f447eb08564007304.png index 439c87f286b2ea5631d744dd5924c096b2e3e597..cc3b70074d65f9e2be74004eeec8bde6c45a20a4 100644 GIT binary patch delta 55 zcmcbfdOdYRw-LXov6Ydbwtzopr01X)t AMF0Q* delta 55 zcmcbfdOdYRw-LXwxs{2bwtzopr007w$ A0{{R3 diff --git a/source/images/theme/wamein.png b/source/images/theme/wamein-38d4677962273b78f31b9a573890be96.png similarity index 99% rename from source/images/theme/wamein.png rename to source/images/theme/wamein-38d4677962273b78f31b9a573890be96.png index 35d076a30828655a0665c59f04d7881db497b0a5..bd7d61ed65e4a597c57c48be01a080130428d04e 100644 GIT binary patch delta 55 zcmdm-vN>hLb3=YpV=E(LZ381K1A~a>qo*f-GgOjB64Sg_Th0Ikp00i_>zopr02N9R Au>b%7 delta 55 zcmdm-vN>hLb3=Y(b1M@gZ381K1B07K*B+ew%}_}iNo>Uo(OL!|@O1TaS?83{1OO{Q B5-$J% diff --git a/source/images/theme/wegman.png b/source/images/theme/wegman-9fa5565d625a1e75be23738d64e056c2.png similarity index 99% rename from source/images/theme/wegman.png rename to source/images/theme/wegman-9fa5565d625a1e75be23738d64e056c2.png index bf018342674e5f1ac6b4e58147d7948627a2e0c8..f454fc37b9f50821c4e7dcc157daba4c85e6b85d 100644 GIT binary patch delta 55 zcmX?`dNy@KqY=NUv6YdDwt#D<7%533iM^?G{>cCYp00i_>zopr0R1=- ATL1t6 delta 55 zcmX?`dNy@KqY=Ncxs{2rwtzopr0Q|NP A?*IS* diff --git a/source/images/theme/work_hard.png b/source/images/theme/work_hard-c12b3ea651f9389a50450ce93c2dba97.png similarity index 99% rename from source/images/theme/work_hard.png rename to source/images/theme/work_hard-c12b3ea651f9389a50450ce93c2dba97.png index c4ffb7a8d04577436cf5690d764dce8b89328687..f68b98ada6181d99124f7f828f346a752d5a2376 100644 GIT binary patch delta 55 zcmX?|emZ?ay)nP3v6YdTwtgWjFqI3#HybKU0?tLPgg&ebxsLQ0RA%( ASpWb4 delta 55 zcmX?|emZ?ay)nPBxs{2jwti_@% diff --git a/source/index.html.erb b/source/index.html.erb index 1856c0b..cded4ae 100644 --- a/source/index.html.erb +++ b/source/index.html.erb @@ -4,8 +4,9 @@ title: Slack Themes <% data.themes.each do |theme| %> <% theme_slug = theme[:name].parameterize.underscore %> +<% digest = Digest::MD5.new.hexdigest(theme[:colors]) %> <% end %>