-
Notifications
You must be signed in to change notification settings - Fork 322
/
Rakefile
64 lines (51 loc) · 1.57 KB
/
Rakefile
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
# 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
# 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
task default: %i[spec rubocop verify_measurements]