Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 158 lines (124 sloc) 4.417 kb
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
require "rubygems"
require "rake/testtask"
require "rake/gempackagetask"
begin
  require "hanna/rdoctask"
rescue LoadError
  require "rake/rdoctask"
end

$:.unshift(File.dirname(__FILE__) + "/lib")
require "public_suffix_service"


# Common package properties
PKG_NAME = ENV['PKG_NAME'] || PublicSuffixService::GEM
PKG_VERSION = ENV['PKG_VERSION'] || PublicSuffixService::VERSION
RUBYFORGE_PROJECT = nil

if ENV['SNAPSHOT'].to_i == 1
  PKG_VERSION << "." << Time.now.utc.strftime("%Y%m%d%H%M%S")
end


# Run all the tests in the /test folder
Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList["test/**/*_test.rb"]
  t.verbose = true
end

# Run test by default.
task :default => ["test"]


# This builds the actual gem. For details of what all these options
# mean, and other ones you can add, check the documentation here:
#
# http://rubygems.org/read/chapter/20
#
spec = Gem::Specification.new do |s|

  s.name = PKG_NAME
  s.version = PKG_VERSION
  s.summary = "Domain Name parser based on the Public Suffix List"
  s.author = "Simone Carletti"
  s.email = "weppos@weppos.net"
  s.homepage = "http://www.simonecarletti.com/code/public_suffix_service"
  s.description = <<-EOD
Intelligent domain name parser based in the Public Suffic List. \
PublicSuffixService can parse and decompose a domain name into top level domain, \
domain and subdomains.
EOD

  s.has_rdoc = true
  # You should probably have a README of some kind. Change the filename
  # as appropriate
  s.extra_rdoc_files = Dir.glob("*.rdoc")
  s.rdoc_options = %w( --main README.rdoc )

  # Add any extra files to include in the gem (like your README)
  s.files = %w( Rakefile ) + Dir.glob("*.{rdoc,gemspec}") + Dir.glob("{test,lib}/**/*")
  s.require_paths = %w( lib )

  # If you want to depend on other gems, add them here, along with any
  # relevant versions
  # s.add_dependency("some_other_gem", "~> 0.1.0")

  # If your tests use any gems, include them here
  s.add_development_dependency("rr")
end

# This task actually builds the gem. We also regenerate a static
# .gemspec file, which is useful if something (i.e. GitHub) will
# be automatically building a gem for this project. If you're not
# using GitHub, edit as appropriate.
Rake::GemPackageTask.new(spec) do |pkg|
  pkg.gem_spec = spec
end

desc "Build the gemspec file #{spec.name}.gemspec"
task :gemspec do
  file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
  File.open(file, "w") {|f| f << spec.to_ruby }
end

desc "Remove any temporary products, including gemspec"
task :clean => [:clobber] do
  rm "#{spec.name}.gemspec" if File.file?("#{spec.name}.gemspec")
end

desc "Remove any generated file"
task :clobber => [:clobber_rdoc, :clobber_package]

desc "Package the library and generates the gemspec"
task :package => [:gemspec]


begin
  require "yard"
  require "yard/rake/yardoc_task"

  YARD::Rake::YardocTask.new(:yardoc) do |y|
    y.options = ["--output-dir", "yardoc"]
  end

  namespace :yardoc do
    desc "Publish YARD documentation to the site"
    task :publish => ["yardoc:clobber", "yardoc"] do
      ENV["username"] || raise(ArgumentError, "Missing ssh username")
      sh "rsync -avz --delete yardoc/ #{ENV["username"]}@code:/var/www/apps/code/#{PKG_NAME}/api"
    end

    desc "Remove YARD products"
    task :clobber do
      rm_r "yardoc" rescue nil
    end
  end

  task :clobber => "yardoc:clobber"
rescue LoadError
  puts "YARD is not available"
end


begin
  require "rcov/rcovtask"

  desc "Create a code coverage report"
  Rcov::RcovTask.new do |t|
    t.test_files = FileList["test/**/*_test.rb"]
    t.ruby_opts << "-Itest -x rr,rcov,Rakefile"
    t.verbose = true
  end
rescue LoadError
  puts "RCov is not available"
end


desc "Open an irb session preloaded with this library"
task :console do
  sh "irb -rubygems -I lib -r public_suffix_service.rb"
end


desc <<-DESC
Downloads the Public Suffix List file from the repository \
and stores it locally.
DESC
task :download_definitions do
  require "net/http"

  DEFINITION_URL = "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1"

  File.open("lib/public_suffix_service/definitions.dat", "w+") do |f|
    response = Net::HTTP.get_response(URI.parse(DEFINITION_URL))
    f.write(response.body)
  end
end
Something went wrong with that request. Please try again.