forked from emberjs-addons/ember-bootstrap
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
130 lines (107 loc) · 3.29 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
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
abort "Please use Ruby 1.9 to build Ember.js!" if RUBY_VERSION !~ /^1\.9/
require "bundler/setup"
require "erb"
require 'rake-pipeline'
require "colored"
def pipeline
Rake::Pipeline::Project.new("Assetfile")
end
def setup_uploader
require 'github_downloads'
uploader = GithubDownloads::Uploader.new
uploader.authorize
uploader
end
def upload_file(uploader, filename, description, file)
print "Uploading #{filename}..."
if uploader.upload_file(filename, description, file)
puts "Success"
else
puts "Failure"
end
end
def update_version
require "versionomy"
version = File.open("VERSION", "rb").read.strip!
Versionomy.parse(version).bump(:tiny)
end
desc "Release current source and bump to new version"
task :release, [:new_version] => :dist do |t, args|
# Release this version
version = File.open("VERSION", "rb").read.strip!
puts "Releasing new version #{version}"
system "git tag v#{version}"
system "git push --tags"
# Upload minified first, so non-minified shows up on top
uploader = setup_uploader
upload_file(uploader, "ember-bootstrap-#{version}.min.js", "Ember Bootstrap v#{version} (minified)", "dist/ember-bootstrap.min.js")
upload_file(uploader, "ember-bootstrap-#{version}.js", "Ember Bootstrap v#{version}", "dist/ember-bootstrap.js")
# Bump to new version
version = args[:new_version] || update_version
File.open("VERSION", "w") {|f| f.write(version)}
system "git commit VERSION -m 'Bumped to new version v#{version}'"
end
desc "Strip trailing whitespace for JavaScript files in packages"
task :strip_whitespace do
Dir["packages/**/*.js"].each do |name|
body = File.read(name)
File.open(name, "w") do |file|
file.write body.gsub(/ +\n/, "\n")
end
end
end
desc "Build ember-bootstrap.js"
task :dist do
puts "Building Ember Bootstrap..."
pipeline.invoke
puts "Done"
end
desc "Clean build artifacts from previous builds"
task :clean do
puts "Cleaning build..."
pipeline.clean
puts "Done"
end
desc "Upload latest Ember Bootstrap build to GitHub repository"
task :upload_latest => :dist do
uploader = setup_uploader
# Upload minified first, so non-minified shows up on top
upload_file(uploader, 'ember-bootstrap-latest.min.js', "Ember Bootstrap Master (minified)", "dist/ember-bootstrap.min.js")
upload_file(uploader, 'ember-bootstrap-latest.js', "Ember Bootstrap Master", "dist/ember-bootstrap.js")
end
desc "Run tests with phantomjs"
task :test, [:suite] => :dist do |t, args|
unless system("which phantomjs > /dev/null 2>&1")
abort "PhantomJS is not installed. Download from http://phantomjs.org"
end
suites = {
:default => ["package=all"],
:all => ["package=all"]
}
if ENV['TEST']
opts = [ENV['TEST']]
else
suite = args[:suite] || :default
opts = suites[suite.to_sym]
end
unless opts
abort "No suite named: #{suite}"
end
cmd = opts.map do |opt|
"phantomjs tests/qunit/run-qunit.js \"file://localhost#{File.dirname(__FILE__)}/tests/index.html?#{opt}\""
end.join(' && ')
# Run the tests
puts "Running: #{opts.join(", ")}"
success = system(cmd)
if success
puts "Tests Passed".green
else
puts "Tests Failed".red
exit(1)
end
end
desc "Automatically run tests (Mac OS X only)"
task :autotest do
system("kicker -e 'rake test' packages")
end
task :default => :dist