1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
# frozen_string_literal: true
require "bundler/gem_tasks"
require "rspec/core/rake_task"
RSpec::Core::RakeTask.new
require "rubocop/rake_task"
RuboCop::RakeTask.new
require "yardstick/rake/measurement"
Yardstick::Rake::Measurement.new do |measurement|
measurement.output = "measurement/report.txt"
end
require "yardstick/rake/verify"
Yardstick::Rake::Verify.new do |verify|
verify.require_exact_threshold = false
verify.threshold = 55
end
task :generate_status_codes do
require "http"
require "nokogiri"
url = "http://www.iana.org/assignments/http-status-codes/http-status-codes.xml"
xml = Nokogiri::XML HTTP.get url
arr = xml.xpath("//xmlns:record").reduce([]) do |a, e|
code = e.xpath("xmlns:value").text.to_s
desc = e.xpath("xmlns:description").text.to_s
next a if %w[Unassigned (Unused)].include?(desc)
a << "#{code} => #{desc.inspect}"
end
File.open("./lib/http/response/status/reasons.rb", "w") do |io|
io.puts <<-TPL.gsub(/^[ ]{6}/, "")
# AUTO-GENERATED FILE, DO NOT CHANGE IT MANUALLY
require "delegate"
module HTTP
class Response
class Status < ::Delegator
# Code to Reason map
#
# @example Usage
#
# REASONS[400] # => "Bad Request"
# REASONS[414] # => "Request-URI Too Long"
#
# @return [Hash<Fixnum => String>]
REASONS = {
#{arr.join ",\n "}
}.each { |_, v| v.freeze }.freeze
end
end
end
TPL
end
end
if ENV["CI"].nil?
task :default => %i[spec rubocop verify_measurements]
else
case ENV["SUITE"]
when "rubocop" then task :default => :rubocop
when "yardstick" then task :default => :verify_measurements
else task :default => :spec
end
end
|