root/trunk/Rakefile

Download in other formats: Raw | Text Show revision log | Last change
Revision:
Log:

remove debug

Author:
seb
Date:
Apr 15 2008 * 16:52 (8 months ago)
1require 'rake'
2require 'rake/packagetask'
3require 'rbconfig'
4
5PUI_NAME = 'prototype-ui'
6PUI_VERSION = 'trunk'
7
8PUI_DEPENDENCIES = {
9 :core => nil,
10 :window => [ :"util/iframe_shim.js", :"util/drag.js", :shadow ],
11 :carousel => nil,
12 :dock => nil,
13 :shadow => :util,
14 :util => nil,
15 :context_menu => [ :shadow, :"util/iframe_shim.js"],
16 :auto_complete => [ :shadow, :"util/iframe_shim.js"],
17 :calendar => :"util/date.js"
18}
19
20PUI_COMPONENTS = PUI_DEPENDENCIES.keys
21
22PUI_ROOT = File.expand_path(File.dirname(__FILE__))
23PUI_SRC_DIR = File.join(PUI_ROOT, 'src')
24PUI_DIST_DIR = File.join(PUI_ROOT, 'dist')
25PUI_DIST_FILE = File.join(PUI_DIST_DIR, "#{PUI_NAME}.js")
26PUI_DIST_FILE_PACKED =
27 File.join(PUI_DIST_DIR, "#{PUI_NAME}.packed.js")
28
29PUI_PKG_DIR = File.join(PUI_ROOT, 'pkg')
30PUI_LIB_DIR = File.join(PUI_ROOT, 'lib')
31PUI_DOC_DIR = File.join(PUI_ROOT, 'doc')
32
33$:.unshift File.join(PUI_ROOT, 'lib')
34$:.unshift File.join(PUI_ROOT, 'lib', 'coderay', 'lib')
35
36def windows?
37 Config::CONFIG['host'].include?('mswin')
38end
39
40NATURAL_DOCS = File.join(PUI_LIB_DIR, 'naturaldocs', "NaturalDocs")
41NATURAL_DOCS << '.bat' if windows?
42
43task :default => [ :dist, :"dist:compress", :doc ]
44
45desc "Generates dist/prototype-ui.js with either all components or COMPONENTS"
46task :dist do
47 require 'distrib'
48 components = ENV['COMPONENTS'] ? ENV['COMPONENTS'].split(',').collect { |c| c.strip } : PUI_COMPONENTS
49
50 Distrib.new(*components).write
51end
52
53namespace :dist do
54 desc "Generate dist/[component].js with each component and its dependencies"
55 task :each_component do
56 require 'distrib'
57
58 PUI_COMPONENTS.each do |component|
59 Distrib.new(component).write(File.join(PUI_DIST_DIR, "#{component}.js"))
60 end
61 end
62
63 desc "Preferred name for dist:each_component"
64 task :each => :each_component
65
66 desc "Compress all JS in dist directory with PackR"
67 task :compress => [:dist, :each] do
68 require 'packr/packr'
69 FileUtils.rm_f Dir["#{PUI_DIST_DIR}/*.packed.js"]
70
71 Dir["#{PUI_DIST_DIR}/*.js"].each do |file|
72 packed_file = file.gsub(".js", ".packed.js")
73 open(packed_file, 'w') do |packed|
74 packed << Packr.new.pack(File.read(file), :base62 => true, :shrink_vars => true)
75 end
76 end
77 end
78end
79
80Rake::PackageTask.new(PUI_NAME, PUI_VERSION) do |package|
81 package.need_tar_gz = true
82 package.package_dir = PUI_PKG_DIR
83 package.package_files.include(
84 '[A-Z]*',
85 'dist/*',
86 'doc/**',
87 'lib/**',
88 'src/**',
89 'test/**',
90 'themes/**'
91 )
92end
93
94task :test => [ "dist:each_component", :test_units ]
95
96require 'test/lib/jstest'
97
98desc "Runs all the JavaScript unit tests and collects the results"
99JavaScriptTestTask.new(:test_units) do |t|
100 testcases = ENV['TESTCASES']
101 tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
102 browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
103
104 t.mount("/lib")
105 t.mount("/dist")
106 t.mount("/src")
107 t.mount("/test")
108
109 Dir["test/unit/*_test.html"].sort.each do |test_file|
110 tests = testcases ? { :url => "/#{test_file}", :testcases => testcases } : "/#{test_file}"
111 test_filename = test_file[/.*\/(.+?)\.html/, 1]
112 t.run(tests) unless tests_to_run && !tests_to_run.include?(test_filename)
113 end
114
115 %w( safari firefox ie konqueror opera ).each do |browser|
116 t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
117 end
118end
119
120
121desc "Create HTML documentation using NaturalDocs"
122task :doc do
123 require 'rubygems'
124 require 'hpricot'
125 require 'coderay'
126 require 'cgi'
127
128 def add_syntax_highlight(doc_files_dir)
129 Dir.glob(File.join(doc_files_dir, '**', '*.html')).each do |fn|
130 doc = Hpricot(File.read(fn))
131
132 doc.search('.CCode').each do |node|
133 source = CGI.unescapeHTML(node.innerHTML.gsub('<br />', "\n"))
134 node.innerHTML = CodeRay.scan(source, :javascript).html
135 end
136
137 File.open(fn, 'w') { |f| f << doc }
138 end
139 end
140
141 doc_dir = File.expand_path(ENV['PUI_DOC_DIR'] || PUI_DOC_DIR)
142 mkdir_p(doc_dir)
143
144 chdir(doc_dir) do
145 `#{doc_dir}/config/set_version.sh` if File.exists?("#{doc_dir}/config/set_version.sh")
146
147 src = File.directory?("#{doc_dir}/src") ? "#{doc_dir}/src" : PUI_SRC_DIR
148 `#{NATURAL_DOCS} -r -i #{src} -o HTML . -p #{doc_dir}/config -cs 'UTF-8' -s 'Default ../styles/prototype-ui ../styles/syntax'`
149 ## Update revision in doc
150 add_syntax_highlight(doc_dir)
151 end
152end
153