3 require 'rake/gempackagetask'
4 require 'rake/rdoctask'
5 require 'rake/testtask'
12 EXT_DIR = "ext/ohcount_native"
13 EXT_DL = "#{EXT_DIR}/ohcount_native.#{CONFIG['DLEXT']}"
14 ARCH_DIR = "lib/#{::Config::CONFIG['arch']}"
15 ARCH_DL = "#{ARCH_DIR}/ohcount_native.#{CONFIG['DLEXT']}"
17 CLEAN.include FileList["#{EXT_DIR}/*.{so,bundle,#{CONFIG['DLEXT']}}"],
18 FileList["#{EXT_DIR}/*.o"],
19 FileList["#{EXT_DIR}/polyglots.c"],
20 FileList["#{EXT_DIR}/Makefile"],
21 (FileList["#{EXT_DIR}/*_parser.h"] - FileList["#{EXT_DIR}/ragel_parser.h"])
23 RDOC_OPTS = ['--quiet', '--title', 'Ohcount Reference', '--main', 'README', '--inline-source']
25 PKG_FILES = %w(README COPYING Rakefile lib/ohcount.rb) +
26 Dir.glob("ext/ohcount_native/*.{h,c,rb}") +
27 Dir.glob("ext/ohcount_native/glots/*.rb") +
28 Dir.glob("lib/ohcount/*.rb") +
30 Dir.glob("test/**/*") +
34 Gem::Specification.new do |s|
37 s.platform = Gem::Platform::RUBY
39 s.rdoc_options += RDOC_OPTS
40 s.summary = "The Ohloh source code line counter"
41 s.description = s.summary
42 s.author = "Ohloh Corporation"
43 s.email = "info@ohloh.net"
44 s.homepage = "http://www.ohloh.net"
46 s.require_paths = ["lib", ARCH_DIR]
47 s.extensions << 'ext/ohcount_native/extconf.rb'
49 s.executables = ['ohcount']
52 Rake::GemPackageTask.new(SPEC) do |p|
57 task :install => :package do
58 `sudo gem install pkg/#{NAME}-#{VERS}`
61 file ARCH_DL => EXT_DL do
66 file EXT_DL => FileList["#{EXT_DIR}/polyglots.c", "#{EXT_DIR}/Makefile", "#{EXT_DIR}/*.{c,h,rb}"] do
69 rls = FileList['*.rl']
70 rls.exclude('common.rl')
72 h = rl.scan(/^(.+)\.[^\.]+$/).flatten.first + '_parser.h'
73 sh "ragel #{rl} -o ../#{h}"
80 file "#{EXT_DIR}/Makefile" => "#{EXT_DIR}/extconf.rb" do
83 ruby 'extconf.rb', 'debug'
90 file "#{EXT_DIR}/polyglots.c" => FileList["#{EXT_DIR}/*.rb", "#{EXT_DIR}/glots/*.rb"] do
96 Rake::RDocTask.new do |rdoc|
98 rdoc.options += RDOC_OPTS
99 rdoc.rdoc_files.add ['README' ,'COPYING', 'lib/**/*.rb', 'ext/**/*.rb', 'ext/**/*.c', 'test/test_helper.rb', 'test/unit/detector_test.rb']
102 Rake::TestTask.new :ohcount_unit_tests => ARCH_DL do |t|
103 puts File.dirname(__FILE__) + '/test/unit/*_test.rb'
104 t.test_files = FileList[File.dirname(__FILE__) + '/test/unit/*_test.rb']
108 task :default => :ohcount_unit_tests