diff options
Diffstat (limited to 'scripts/docs_screenshots.rb')
-rwxr-xr-x | scripts/docs_screenshots.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/docs_screenshots.rb b/scripts/docs_screenshots.rb new file mode 100755 index 00000000000..e02d67de748 --- /dev/null +++ b/scripts/docs_screenshots.rb @@ -0,0 +1,60 @@ +#!/usr/bin/env ruby + +# frozen_string_literal: true + +require 'png_quantizator' +require 'open3' +require 'parallel' +require_relative '../tooling/lib/tooling/images.rb' + +generator = ARGV[0] +milestone = ARGV[1] + +unless generator + warn('Error: missing generator, please supply one') + abort +end + +unless milestone + warn('Error: missing milestone, please supply one') + abort +end + +def rename_image(file, milestone) + path = File.dirname(file) + basename = File.basename(file) + final_name = File.join(path, "#{basename}_v#{milestone}.png") + FileUtils.mv(file, final_name) +end + +system('spring', 'rspec', generator) + +files = [] + +Open3.popen3("git diff --name-only -- '*.png'") do |stdin, stdout, stderr, thread| + files.concat stdout.read.chomp.split("\n") +end + +Open3.popen3("git status --porcelain -- '*.png'") do |stdin, stdout, stderr, thread| + files.concat stdout.read.chomp.split("?? ") +end + +files.reject!(&:empty?) + +if files.empty? + puts "No file generated, did you select the right screenshot generator?" +else + puts "Compressing newly generated screenshots" + + Parallel.each(files) do |file| + file_path = File.join(Dir.pwd, file.to_s.strip) + was_uncompressed, savings = Tooling::Image.compress_image(file_path) + rename_image(file_path, milestone) + + if was_uncompressed + puts "#{file} was reduced by #{savings} bytes." + else + puts "Skipping already compressed file: #{file}." + end + end +end |