aboutsummaryrefslogtreecommitdiffstats
path: root/Rakefile
blob: fc20dc011fc51c057fa598fa4a6b373a1b5791e4 (plain)
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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(\'<style type="text/css">\n')
  f.write(css.gsub(/'/, "\\'").gsub(/\n/, "\\n"));
  f.write('\n</style>\');')
  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