From e59171935f3a4f5c3b48a862d6d29ecd5a581d8e Mon Sep 17 00:00:00 2001 From: "Davis W. Frank" Date: Tue, 14 Jun 2011 08:30:14 -0700 Subject: [PATCH] breaking up distribution tasks; moving version to a template to have a simpler concat function --- Rakefile | 11 ++++++++++- lib/jasmine.js | 2 +- src/templates/version.erb | 6 ++++++ src/version.js | 6 ++++++ src/{core => }/version.json | 0 tasks/build_dist.rb | 25 +++++++++++++++++++++---- tasks/helpers.rb | 19 ++----------------- tasks/pages.rb | 13 +++++++++++++ tasks/standalone.rb | 34 ++++++++++++++++++++++++++++++++++ 9 files changed, 93 insertions(+), 23 deletions(-) create mode 100644 src/templates/version.erb create mode 100644 src/version.js rename src/{core => }/version.json (100%) create mode 100644 tasks/pages.rb create mode 100644 tasks/standalone.rb diff --git a/Rakefile b/Rakefile index 369c9966..8c646081 100644 --- a/Rakefile +++ b/Rakefile @@ -5,11 +5,20 @@ Dir["#{File.dirname(__FILE__)}/tasks/**/*.rb"].each do |file| require file end +task :default => :spec + +task :require_pages_submodule do + raise "Submodule for Github Pages isn't present. Run git submodule update --init" unless File.exist?('pages/download.html') +end + task :require_node do raise "\nNode.js is required to develop code for Jasmine. Please visit http://nodejs.org to install.\n\n" unless node_installed? end -task :default => :spec +def node_installed? + `which node` =~ /node/ +end + #namespace :jasmine do # diff --git a/lib/jasmine.js b/lib/jasmine.js index 3f836651..ed30e9ad 100644 --- a/lib/jasmine.js +++ b/lib/jasmine.js @@ -2467,5 +2467,5 @@ jasmine.version_= { "major": 1, "minor": 1, "build": 0, - "revision": 1307978448 + "revision": 1308065344 } diff --git a/src/templates/version.erb b/src/templates/version.erb new file mode 100644 index 00000000..74d92a55 --- /dev/null +++ b/src/templates/version.erb @@ -0,0 +1,6 @@ +jasmine.version_= { + "major": <%= major %>, + "minor": <%= minor %>, + "build": <%= build %>, + "revision": <%= revision %> +} diff --git a/src/version.js b/src/version.js new file mode 100644 index 00000000..246ab2a7 --- /dev/null +++ b/src/version.js @@ -0,0 +1,6 @@ +jasmine.version_= { + "major": 1, + "minor": 1, + "build": 0, + "revision": 1308065344 +} diff --git a/src/core/version.json b/src/version.json similarity index 100% rename from src/core/version.json rename to src/version.json diff --git a/tasks/build_dist.rb b/tasks/build_dist.rb index dfa2e004..76cedee1 100644 --- a/tasks/build_dist.rb +++ b/tasks/build_dist.rb @@ -1,20 +1,20 @@ desc "Build core jasmine.js" -task :build_dist => :lint do +task :build_dist => [:lint, :write_version_file] do puts 'Building Jasmine distribution from source' - concat_into('lib/jasmine.js') { [core_sources, version_source] } + require 'pp' + concat_into('lib/jasmine.js') { core_sources + version_source_file } concat_into('lib/jasmine-html.js') { html_sources } FileUtils.cp('src/html/jasmine.css', 'lib/jasmine.css') end def concat_into(output_file, &block) - files, extra = yield + files = yield File.open(output_file, 'w') do |out| files.each do |f| out << File.read(f) end - out << extra if extra end end @@ -25,3 +25,20 @@ task :lint do end task :hint => :lint + +task :write_version_file do + template = Tilt.new('src/templates/version.erb') + scope = OpenStruct.new(:major => version_hash["major"], + :minor => version_hash["minor"], + :build => version_hash["build"], + :revision => Time.now.to_i) + + File.open('src/version.js', 'w+') do |f| + f << template.render(scope) + end + +end + +def version_source_file + Dir.glob('src/version.js') +end \ No newline at end of file diff --git a/tasks/helpers.rb b/tasks/helpers.rb index 84be2c5d..b306ade3 100644 --- a/tasks/helpers.rb +++ b/tasks/helpers.rb @@ -32,21 +32,6 @@ def version_string "#{version_hash['major']}.#{version_hash['minor']}.#{version_hash['build']}" end -def version_source -<<-JS -jasmine.version_= { - "major": #{version_hash['major'].to_json}, - "minor": #{version_hash['minor'].to_json}, - "build": #{version_hash['build'].to_json}, - "revision": #{Time.now.to_i} -} -JS -end - def version_hash - @version ||= JSON.parse(File.new("src/core/version.json").read); -end - -def node_installed? - `which node` =~ /node/ -end + @version ||= JSON.parse(File.new("src/version.json").read); +end \ No newline at end of file diff --git a/tasks/pages.rb b/tasks/pages.rb new file mode 100644 index 00000000..6be9e726 --- /dev/null +++ b/tasks/pages.rb @@ -0,0 +1,13 @@ +desc "Build the Github pages HTML" +task :build_pages => :require_pages_submodule do + Dir.chdir("pages") do + FileUtils.rm_r('pages_output') if File.exist?('pages_output') + Dir.chdir('pages_source') do + system("frank export ../pages_output") + end + puts "\n" + puts "Copying built website to the root of the gh-pages branch" + puts "\n\n" + system("cp -r pages_output/* .") + end +end \ No newline at end of file diff --git a/tasks/standalone.rb b/tasks/standalone.rb new file mode 100644 index 00000000..35835f07 --- /dev/null +++ b/tasks/standalone.rb @@ -0,0 +1,34 @@ +desc "Build example project" +task :build_example_project => :need_pages_submodule do + require 'tmpdir' + + temp_dir = File.join(Dir.tmpdir, 'jasmine-standalone-project') + puts "Building Example Project in #{temp_dir}" + FileUtils.rm_r temp_dir if File.exist?(temp_dir) + Dir.mkdir(temp_dir) + + root = File.expand_path(File.dirname(__FILE__)) + FileUtils.cp_r File.join(root, 'example/.'), File.join(temp_dir) + substitute_jasmine_version(File.join(temp_dir, "SpecRunner.html")) + + lib_dir = File.join(temp_dir, "lib/jasmine-#{jasmine_version}") + FileUtils.mkdir_p(lib_dir) + { + "lib/jasmine.js" => "jasmine.js", + "lib/jasmine-html.js" => "jasmine-html.js", + "src/html/jasmine.css" => "jasmine.css", + "MIT.LICENSE" => "MIT.LICENSE" + }.each_pair do |src, dest| + FileUtils.cp(File.join(root, src), File.join(lib_dir, dest)) + end + + dist_dir = File.join(root, 'pages/downloads') + zip_file_name = File.join(dist_dir, "jasmine-standalone-#{jasmine_version}.zip") + puts "Zipping Example Project and moving to #{zip_file_name}" + FileUtils.mkdir(dist_dir) unless File.exist?(dist_dir) + if File.exist?(zip_file_name) + puts "WARNING!!! #{zip_file_name} already exists!" + FileUtils.rm(zip_file_name) + end + exec "cd #{temp_dir} && zip -r #{zip_file_name} . -x .[a-zA-Z0-9]*" +end