include FileUtils ANGULAR = [ 'src/Angular.js', 'src/JSON.js', 'src/Compiler.js', 'src/Scope.js', 'src/Injector.js', 'src/Parser.js', 'src/Resource.js', 'src/Browser.js', 'src/jqLite.js', 'src/apis.js', 'src/filters.js', 'src/formatters.js', 'src/validators.js', 'src/services.js', 'src/directives.js', 'src/markups.js', 'src/widgets.js', 'src/AngularPublic.js', ] ANGULAR_SCENARIO = [ 'src/scenario/Scenario.js', 'src/scenario/Application.js', 'src/scenario/Describe.js', 'src/scenario/Future.js', 'src/scenario/HtmlUI.js', 'src/scenario/Describe.js', 'src/scenario/Runner.js', 'src/scenario/SpecRunner.js', 'src/scenario/dsl.js', 'src/scenario/matchers.js', ] GENERATED_FILES = [ 'angular-debug.js', 'angular-minified.js', 'angular-minified.map', 'angular-scenario.js', ] task :default => [:compile, :test] desc 'Generate Externs' task :compile_externs do out = File.new("externs.js", "w") out.write("function jQuery(){};\n") file = File.new("lib/jquery/jquery-1.4.2.js", "r") while (line = file.gets) if line =~ /^\s*(\w+)\s*:\s*function.*$/ out.write("jQuery.#{$1}=function(){};\n") end end file.close out.write("jQuery.scope=function(){};\n") out.write("jQuery.controller=function(){};\n") out.close end desc 'Clean Generated Files' task :clean do GENERATED_FILES.each do |file| `rm #{file}` end end desc 'Compile Scenario' task :compile_scenario do deps = [ 'lib/jquery/jquery-1.4.2.js', 'src/scenario/angular.prefix', ANGULAR, ANGULAR_SCENARIO, 'src/scenario/angular.suffix', ] css = %x(cat css/angular-scenario.css) concat = 'cat ' + deps.flatten.join(' ') f = File.new("angular-scenario.js", 'w') f.write(%x{#{concat}}) f.write('document.write(\'\');') f.close end desc 'Compile JavaScript' task :compile => [:compile_externs, :compile_scenario] do deps = [ 'src/angular.prefix', ANGULAR, 'src/angular.suffix', ] f = File.new("angular-debug.js", 'w') concat = 'cat ' + deps.flatten.join(' ') f.write(%x{#{concat}}) f.close %x(java -jar lib/compiler-closure/compiler.jar \ --compilation_level SIMPLE_OPTIMIZATIONS \ --js angular-debug.js \ --externs externs.js \ --create_source_map ./angular-minified.map \ --js_output_file angular-minified.js) end desc 'Create angular distribution' task :package => :compile do date = Time.now.strftime('%y%m%d_%H%M') sha = %x(git rev-parse HEAD)[0..7] filename = "angular-#{date}-#{sha}.tgz" %x(cp test/angular-mocks.js ./) %x(tar -cf #{filename} \ angular-debug.js \ angular-minified.js \ angular-scenario.js \ angular-mocks.js \ css/angular.css \ css/angular_images/ ) %x( rm angular-mocks.js) puts "Package created: #{filename}" end namespace :server do desc 'Run JsTestDriver Server' task :start do sh %x(java -jar lib/jstestdriver/JsTestDriver.jar --browser open --port 9876) end desc "Run JavaScript tests against the server" task :test do sh %(java -jar lib/jstestdriver/JsTestDriver.jar --tests all) end end desc "Run JavaScript tests" task :test do sh %(java -jar lib/jstestdriver/JsTestDriver.jar --tests all --browser open --port 9876) end desc 'Lint' task :lint do out = %x(lib/jsl/jsl -conf lib/jsl/jsl.default.conf) print out end desc 'push_angularjs' task :push_angularjs do Rake::Task['compile'].execute 0 sh %(cat angularjs.ftp | ftp -N angularjs.netrc angularjs.org) end