fusion 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/fusion.rb +87 -7
- metadata +6 -6
data/lib/fusion.rb
CHANGED
@@ -12,9 +12,12 @@ module Fusion
|
|
12
12
|
@options ||= {}
|
13
13
|
@options.update(options)
|
14
14
|
|
15
|
-
|
15
|
+
if @options[:bundle_file_path].nil? && @options[:bundle_configs].nil?
|
16
|
+
raise Exception("Configuration error -- must specify #{:bundle_file_path} when configuring Fusion javascript bundler")
|
17
|
+
end
|
16
18
|
|
17
|
-
@options[:project_path] = File.join(@options[:bundle_file_path].split("/")[0..-2])
|
19
|
+
@options[:project_path] = File.join(@options[:bundle_file_path].split("/")[0..-2]) if @options[:bundle_file_path]
|
20
|
+
|
18
21
|
end
|
19
22
|
|
20
23
|
# So that the bundler can be configured and run in two different places ... like Sass
|
@@ -26,17 +29,24 @@ module Fusion
|
|
26
29
|
@bundle_options = Fusion.instance_variable_get('@options')
|
27
30
|
@log = @bundle_options[:logger] || Logger.new(STDOUT)
|
28
31
|
|
29
|
-
|
32
|
+
if @bundle_options[:bundle_configs]
|
33
|
+
@bundle_configs = @bundle_options[:bundle_configs]
|
34
|
+
else
|
35
|
+
@bundle_configs = YAML::load(File.open(@bundle_options[:bundle_file_path]))
|
36
|
+
end
|
37
|
+
|
30
38
|
end
|
31
39
|
|
32
40
|
def run
|
33
41
|
start = Time.now
|
34
42
|
|
35
|
-
@bundle_configs.
|
43
|
+
bundles = @bundle_configs.collect do |config|
|
36
44
|
bundle(config)
|
37
45
|
end
|
38
46
|
|
39
47
|
@log.debug "Javascript Reloaded #{@bundle_configs.size} bundle(s) (#{Time.now - start}s)"
|
48
|
+
|
49
|
+
bundles
|
40
50
|
end
|
41
51
|
|
42
52
|
def gather_files(config)
|
@@ -46,7 +56,13 @@ module Fusion
|
|
46
56
|
config[:input_files].each do |input_file|
|
47
57
|
if (input_file =~ URI::regexp).nil?
|
48
58
|
# Not a URL
|
49
|
-
|
59
|
+
file_path = input_file
|
60
|
+
|
61
|
+
unless input_file == File.absolute_path(input_file)
|
62
|
+
file_path = File.join(@bundle_options[:project_path], input_file)
|
63
|
+
end
|
64
|
+
|
65
|
+
input_files << file_path
|
50
66
|
else
|
51
67
|
# This is a remote file, if we don't have it, get it
|
52
68
|
input_files << get_remote_file(input_file)
|
@@ -75,7 +91,15 @@ module Fusion
|
|
75
91
|
|
76
92
|
def get_output_file(config)
|
77
93
|
raise Exception.new("Undefined js bundler output file") if config[:output_file].nil?
|
78
|
-
File.join(@bundle_options[:project_path], config[:output_file])
|
94
|
+
output_file = File.join(@bundle_options[:project_path], config[:output_file])
|
95
|
+
path_directories = output_file.split("/")
|
96
|
+
|
97
|
+
if path_directories.size > 1
|
98
|
+
path = File.join(File.expand_path("."), path_directories[0..-2].join("/"))
|
99
|
+
FileUtils::mkpath(File.join(path,"/"))
|
100
|
+
end
|
101
|
+
|
102
|
+
output_file
|
79
103
|
end
|
80
104
|
|
81
105
|
def get_remote_file(url)
|
@@ -110,7 +134,6 @@ module Fusion
|
|
110
134
|
|
111
135
|
def bundle(config)
|
112
136
|
js = []
|
113
|
-
|
114
137
|
input_files = gather_files(config)
|
115
138
|
|
116
139
|
input_files.each do |input_file|
|
@@ -120,6 +143,8 @@ module Fusion
|
|
120
143
|
js = js.join("\n")
|
121
144
|
|
122
145
|
File.open(get_output_file(config), "w") { |f| f << js }
|
146
|
+
|
147
|
+
js
|
123
148
|
end
|
124
149
|
|
125
150
|
end
|
@@ -151,4 +176,59 @@ module Fusion
|
|
151
176
|
|
152
177
|
end
|
153
178
|
|
179
|
+
class DebugOptimized < Optimized
|
180
|
+
def gather_files(config)
|
181
|
+
@log.debug "Warning ... using Debug compiler."
|
182
|
+
input_files = []
|
183
|
+
|
184
|
+
if(config[:input_files])
|
185
|
+
config[:input_files].each do |input_file|
|
186
|
+
@log.debug "Remote file? #{!(input_file =~ URI::regexp).nil?}"
|
187
|
+
|
188
|
+
if (input_file =~ URI::regexp).nil?
|
189
|
+
# Not a URL
|
190
|
+
input_files << File.join(@bundle_options[:project_path], input_file)
|
191
|
+
else
|
192
|
+
# This is a remote file, if we don't have it, get it
|
193
|
+
input_files << get_remote_file(input_file)
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
if (config[:input_directory])
|
199
|
+
directory = File.join(@bundle_options[:project_path],config[:input_directory])
|
200
|
+
|
201
|
+
file_names = Dir.open(directory).entries.sort.find_all {|filename| filename.end_with?(".js") }
|
202
|
+
|
203
|
+
input_files += file_names.collect do |file_name|
|
204
|
+
File.join(directory, file_name)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
input_files.uniq!
|
209
|
+
|
210
|
+
# Now wrap each file in a try/catch block and update the input_files list
|
211
|
+
|
212
|
+
FileUtils::mkpath(File.join(@bundle_options[:project_path],".debug"))
|
213
|
+
|
214
|
+
input_files.collect do |input_file|
|
215
|
+
contents = File.open(input_file).read
|
216
|
+
new_input_file =""
|
217
|
+
file_name = input_file.split("/").last
|
218
|
+
|
219
|
+
if input_file.include?(".remote")
|
220
|
+
new_input_file = input_file.gsub(".remote",".debug")
|
221
|
+
else
|
222
|
+
new_input_file = File.join(@bundle_options[:project_path], ".debug", file_name)
|
223
|
+
end
|
224
|
+
|
225
|
+
new_contents = "///////////////////\n//mw_bundle: #{input_file}\n///////////////////\n\n try{\n#{contents}\n}catch(e){\nconsole.log('Error (' + e + 'generated in : #{input_file}');\n}"
|
226
|
+
File.open(new_input_file,"w") {|f| f << new_contents}
|
227
|
+
|
228
|
+
new_input_file
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
154
234
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-10-10 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: open4
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153789700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153789700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mechanize
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153789260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153789260
|
36
36
|
description: Fusion bundles and re-bundles your javascript in two modes - quick (dumb
|
37
37
|
concatenation) and optimized (google closure compiler's SIMPLE_OPTIMIZATIONS level
|
38
38
|
email:
|