public
Description: GitHub Blog Badges for Everyone
Homepage: http://drnicjavascript.rubyforge.org/github_badge/
Clone URL: git://github.com/drnic/github-badges.git
drnic (author)
Mon Sep 14 02:48:17 -0700 2009
commit  d014b3c3ea8fc3e4b4d9d1ea7715cbbb8d8deabb
tree    c1df9c044da213a060cb5c93f68826e99e88e5eb
parent  826dc847d104a8cc3b84956c32a557c0c90780ad
github-badges / Rakefile
100644 136 lines (113 sloc) 4.402 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
require 'rubygems'
begin
  require 'rake'
rescue LoadError
  puts 'This script should only be accessed via the "rake" command.'
  puts 'Installation: gem install rake -y'
  exit
end
require 'rake'
require 'rake/clean'
require 'rake/packagetask'
 
$:.unshift File.dirname(__FILE__) + "/lib"
 
APP_VERSION = File.open('History.txt').read.split("\n").first.match(/\b[\d\.]+\b/)[0]
APP_NAME = 'github-badge'
RUBYFORGE_PROJECT = 'drnicjavascript'
APP_FILE_NAME= "#{APP_NAME}.js.erb"
APP_BADGE_NAME= "#{APP_NAME}-launcher"
APP_BADGE_FILE_NAME= "#{APP_NAME}-launcher.js.erb"
 
APP_ROOT = File.expand_path(File.dirname(__FILE__))
APP_SRC_DIR = File.join(APP_ROOT, 'src')
APP_DIST_DIR = File.join(APP_ROOT, 'dist')
APP_PKG_DIR = File.join(APP_ROOT, 'pkg')
 
 
unless ENV['rakefile_just_config']
 
task :version do
  puts APP_VERSION
end
 
task :default => [:dist, :package, :clean_package_source]
 
desc "Builds the distribution"
task :dist do
  $:.unshift File.join(APP_ROOT, 'lib')
  require 'protodoc'
  require 'fileutils'
  FileUtils.mkdir_p APP_DIST_DIR
 
  Dir.chdir(APP_SRC_DIR) do
    File.open(File.join(APP_DIST_DIR, "#{APP_NAME}.js"), 'w+') do |dist|
      dist << Protodoc::Preprocessor.new(APP_FILE_NAME)
    end
    File.open(File.join(APP_DIST_DIR, "#{APP_BADGE_NAME}.js"), 'w+') do |dist|
      dist << Protodoc::Preprocessor.new(APP_BADGE_FILE_NAME)
    end
  end
  Dir.chdir(APP_DIST_DIR) do
    FileUtils.copy_file "#{APP_NAME}.js", "#{APP_NAME}-#{APP_VERSION}.js"
    FileUtils.copy_file "#{APP_BADGE_NAME}.js", "#{APP_BADGE_NAME}-#{APP_VERSION}.js"
  end
  FileUtils.cp_r "src/ext", "dist/ext"
  if File.directory?("website")
    FileUtils.rm_rf "website/dist" rescue nil
    FileUtils.mkdir_p "website/dist"
    FileUtils.copy_file "dist/#{APP_NAME}.js", "website/dist/#{APP_NAME}.js"
    FileUtils.copy_file "dist/#{APP_NAME}.js", "website/dist/#{APP_NAME}-#{APP_VERSION}.js"
    FileUtils.copy_file "dist/#{APP_BADGE_NAME}.js", "website/dist/#{APP_BADGE_NAME}.js"
    FileUtils.copy_file "dist/#{APP_BADGE_NAME}.js", "website/dist/#{APP_BADGE_NAME}-#{APP_VERSION}.js"
    FileUtils.cp_r "src/ext", "website/dist/ext"
  end
end
 
Rake::PackageTask.new(APP_NAME, APP_VERSION) do |package|
  package.need_tar_gz = true
  package.package_dir = APP_PKG_DIR
  package.package_files.include(
    '[A-Z]*',
    'config/*.sample',
    "dist/**",
    'lib/**',
    'src/**',
    'script/**',
    'tasks/**',
    'test/**',
    'website/**'
  )
end
 
desc "Builds the distribution, runs the JavaScript unit + functional tests and collects their results."
task :test => [:dist, :test_units, :test_functionals]
 
require 'jstest'
desc "Runs all the JavaScript unit tests and collects the results"
JavaScriptTestTask.new(:test_units, 4711) do |t|
  testcases = ENV['TESTCASES']
  tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
  browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
 
  t.mount("/dist")
  t.mount("/src")
  t.mount("/test")
 
  Dir["test/unit/*_test.html"].sort.each do |test_file|
    tests = testcases ? { :url => "/#{test_file}", :testcases => testcases } : "/#{test_file}"
    test_filename = test_file[/.*\/(.+?)\.html/, 1]
    t.run(tests) unless tests_to_run && !tests_to_run.include?(test_filename)
  end
 
  %w( safari firefox ie konqueror opera ).each do |browser|
    t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
  end
end
 
desc "Runs all the JavaScript functional tests and collects the results"
JavaScriptTestTask.new(:test_functionals, 4712) do |t|
  testcases = ENV['TESTCASES']
  tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
  browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
 
  t.mount("/dist")
  t.mount("/src")
  t.mount("/test")
 
  Dir["test/functional/*_test.html"].sort.each do |test_file|
    tests = testcases ? { :url => "/#{test_file}", :testcases => testcases } : "/#{test_file}"
    test_filename = test_file[/.*\/(.+?)\.html/, 1]
    t.run(tests) unless tests_to_run && !tests_to_run.include?(test_filename)
  end
 
  %w( safari firefox ie konqueror opera ).each do |browser|
    t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
  end
end
 
 
task :clean_package_source do
  rm_rf File.join(APP_PKG_DIR, "#{APP_NAME}-#{APP_VERSION}")
end
 
Dir['tasks/**/*.rake'].each { |rake| load rake }
 
end