Sha256: 75819b7a26a35be812626de44d63ed76e4024e0c257c6d024389b6dc16d635bd

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

#!/usr/bin/env ruby
# encoding: UTF-8

require 'bundler/setup'

require 'image_optim'

README_FILE = File.expand_path('../../README.markdown', __FILE__)
BEGIN_MARKER = '<!---<worker-options>-->'
END_MARKER = '<!---</worker-options>-->'
GENERATED_NOTE = '<!-- markdown for worker options is generated by '\
    "`#{Pathname($PROGRAM_NAME).cleanpath}` -->"

def write_worker_options(io, klass)
  io.puts "### :#{klass.bin_sym} =>"
  if klass.option_definitions.empty?
    io.puts 'Worker has no options'
  else
    klass.option_definitions.each do |option_definition|
      line = "* `:#{option_definition.name}` — #{option_definition.description}"
      unless line['(defaults']
        line << " *(defaults to `#{option_definition.default.inspect}`)*"
      end
      io.puts line
    end
  end
  io.puts
end

def write_marked(io)
  io.puts BEGIN_MARKER
  io.puts GENERATED_NOTE
  io.puts

  ImageOptim::Worker.klasses.sort_by(&:name).each do |klass|
    write_worker_options(io, klass)
  end

  io.puts END_MARKER
end

def update_readme(text)
  marked_reg = /#{Regexp.escape(BEGIN_MARKER)}.*#{Regexp.escape(END_MARKER)}/m
  text.clone.sub!(marked_reg) do
    StringIO.open do |io|
      write_marked(io)

      io.string.strip
    end
  end
end

readme = File.read(README_FILE)
if (readme = update_readme(readme))
  File.open(README_FILE, 'w') do |f|
    f.write readme
  end
else
  abort 'Did not update worker options'
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
openstreetmap-image_optim-0.21.0.1 script/update_worker_options_in_readme
image_optim-0.21.0 script/update_worker_options_in_readme