Sha256: 40a8e9c02d37cd653ca92831d0f10b58ea8136df0b54bdeae10dafa375d99055

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

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

$:.unshift File.expand_path('../../lib', __FILE__)

require 'net/http'
require 'uri'
require 'image_optim/bin_resolver/simple_version'

README_FILE = File.expand_path('../../README.markdown', __FILE__)

def fetch_url(url)
  res = Net::HTTP.get_response(URI(url))
  raise "Got #{res.class}" unless res.is_a?(Net::HTTPSuccess)
  res.body
end

def v(s)
  ImageOptim::BinResolver::SimpleVersion.new(s)
end

def update_instructions(text)
  latest_versions = Hash.new do |h, project|
    data = fetch_url("http://freecode.com/projects/#{project}/releases.atom")
    versions = data.scan(%r{<title>[a-z]+ (\d+(?:\.\d+)+)</title>}).map{ |m| v(m[0]) }
    h[project] = versions.max
  end

  updated = text.gsub(/([a-z]+)-(\d+(?:\.\d+)+)/) do |m|
    project, current = $1, v($2)
    latest = latest_versions[project]
    "#{project}-#{[current, latest].max}"
  end
  updated unless text == updated
end

readme = File.read(README_FILE)
if readme = update_instructions(readme)
  File.open(README_FILE, 'w') do |f|
    f.write readme
  end
else
  abort "Did not update instructions"
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
image_optim-0.13.3 script/update_instructions_in_readme
image_optim-0.13.2 script/update_instructions_in_readme