Files: 9c7450a176ba89178fdf1581fd7c98cd693fd993 / Rakefile
2561 bytesRaw
1 | gem "rspec" |
2 | require "spec/rake/spectask" |
3 | require 'rake/gempackagetask' |
4 | require 'rake/contrib/rubyforgepublisher' |
5 | require 'rake/clean' |
6 | require 'rake/rdoctask' |
7 | require "benchmark" |
8 | |
9 | PKG_NAME = "bcrypt-ruby" |
10 | PKG_VERSION = "2.0.0" |
11 | PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" |
12 | PKG_FILES = FileList[ |
13 | '[A-Z]*', |
14 | 'lib/**/*.rb', |
15 | 'spec/**/*.rb', |
16 | 'ext/*.c', |
17 | 'ext/*.h', |
18 | 'ext/*.rb' |
19 | ] |
20 | CLEAN.include( |
21 | "ext/*.o", |
22 | "ext/*.bundle", |
23 | "ext/*.so" |
24 | ) |
25 | CLOBBER.include( |
26 | "doc" |
27 | ) |
28 | |
29 | task :default => [:spec] |
30 | |
31 | desc "Run all specs" |
32 | Spec::Rake::SpecTask.new do |t| |
33 | t.spec_files = FileList['spec/**/*_spec.rb'] |
34 | t.spec_opts = ['--color','--backtrace','--diff'] |
35 | t.rcov = true |
36 | t.rcov_dir = 'doc/output/coverage' |
37 | t.rcov_opts = ['--exclude', 'spec\/spec,spec\/.*_spec.rb'] |
38 | end |
39 | |
40 | desc "Run all specs and store html output in doc/output/report.html" |
41 | Spec::Rake::SpecTask.new('spec_html') do |t| |
42 | t.spec_files = FileList['spec/**/*_spec.rb'] |
43 | t.spec_opts = ['--diff','--format html','--backtrace','--out doc/output/report.html'] |
44 | end |
45 | |
46 | desc 'Generate RDoc' |
47 | rd = Rake::RDocTask.new do |rdoc| |
48 | rdoc.rdoc_dir = 'doc/output/rdoc' |
49 | rdoc.options << '--title' << 'bcrypt-ruby' << '--line-numbers' << '--inline-source' << '--main' << 'README' |
50 | rdoc.template = ENV['TEMPLATE'] if ENV['TEMPLATE'] |
51 | rdoc.rdoc_files.include('README', 'COPYING', 'CHANGELOG', 'lib/**/*.rb') |
52 | end |
53 | |
54 | spec = Gem::Specification.new do |s| |
55 | s.name = PKG_NAME |
56 | s.version = PKG_VERSION |
57 | s.summary = "OpenBSD's bcrypt() password hashing algorithm." |
58 | s.description = <<-EOF |
59 | bcrypt() is a sophisticated and secure hash algorithm designed by The OpenBSD project |
60 | for hashing passwords. bcrypt-ruby provides a simple, humane wrapper for safely handling |
61 | passwords. |
62 | EOF |
63 | |
64 | s.files = PKG_FILES.to_a |
65 | s.require_path = 'lib' |
66 | |
67 | s.has_rdoc = true |
68 | s.rdoc_options = rd.options |
69 | s.extra_rdoc_files = rd.rdoc_files.to_a |
70 | |
71 | s.extensions = FileList["ext/extconf.rb"].to_a |
72 | |
73 | s.autorequire = 'bcrypt' |
74 | s.author = ["Coda Hale"] |
75 | s.email = "coda.hale@gmail.com" |
76 | s.homepage = "http://bcrypt-ruby.rubyforge.org" |
77 | s.rubyforge_project = "bcrypt-ruby" |
78 | end |
79 | |
80 | Rake::GemPackageTask.new(spec) do |pkg| |
81 | pkg.need_zip = true |
82 | pkg.need_tar = true |
83 | end |
84 | |
85 | task :compile => [:clean] do |
86 | Dir.chdir('./ext') |
87 | system "ruby extconf.rb" |
88 | system "make" |
89 | end |
90 | |
91 | task :benchmark do |
92 | TESTS = 100 |
93 | TEST_PWD = "this is a test" |
94 | require "lib/bcrypt" |
95 | Benchmark.bmbm do |results| |
96 | 4.upto(10) do |n| |
97 | results.report("cost #{n}:") { TESTS.times { BCrypt::Password.create(TEST_PWD, :cost => n) } } |
98 | end |
99 | end |
100 | end |
101 |
Built with git-ssb-web