fusion 0.0.1 → 0.0.3
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/README.md +25 -0
- data/lib/fusion.rb +42 -2
- metadata +28 -4
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Fusion #
|
2
|
+
|
3
|
+
Is a javascript bundling plugin designed to work like sass. Configure it at startup. Re-bundle when you see a new request.
|
4
|
+
|
5
|
+
## How? ##
|
6
|
+
|
7
|
+
### Configuration ###
|
8
|
+
|
9
|
+
- You can specify multiple bundles in one yaml file.
|
10
|
+
- Per bundle, specify
|
11
|
+
+ The output file name
|
12
|
+
+ An input file list (whose order is preserved)
|
13
|
+
+ An input directory
|
14
|
+
|
15
|
+
The unique set of files specified this way will be combined into one file.
|
16
|
+
|
17
|
+
### Modes ###
|
18
|
+
|
19
|
+
The quick mode just does a dumb concatentation. This is very fast. Its recommended that you use this mode when using the 'reloading' feature.
|
20
|
+
|
21
|
+
The optimized mode uses Google Closure Compiler's SIMPLE_OPTIMIZATIONS flag -- which means comments and whitespace are stripped, and basic (non-obfuscating) optimizations are performed (such as inlining a function thats only called once).
|
22
|
+
|
23
|
+
### Example ###
|
24
|
+
|
25
|
+
See the example [bundle.yaml](fusion/blob/master/doc/example-bundles.yaml) file. This example config will create 3 bundles: main.js / checkout.js / bottom.js
|
data/lib/fusion.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'open4'
|
3
|
+
require 'uri'
|
4
|
+
require 'rubygems' #I'm getting an error loading mechanize ... do I need to load this?
|
5
|
+
require 'mechanize'
|
6
|
+
require 'logger'
|
3
7
|
|
4
8
|
module Fusion
|
5
9
|
|
@@ -19,6 +23,8 @@ module Fusion
|
|
19
23
|
|
20
24
|
def initialize
|
21
25
|
@bundle_options = Fusion.instance_variable_get('@options')
|
26
|
+
@log = @bundle_options[:logger] || Logger.new(STDOUT)
|
27
|
+
|
22
28
|
@bundle_configs = YAML::load(File.open(@bundle_options[:bundle_file_path]))
|
23
29
|
end
|
24
30
|
|
@@ -29,7 +35,7 @@ module Fusion
|
|
29
35
|
bundle(config)
|
30
36
|
end
|
31
37
|
|
32
|
-
|
38
|
+
@log.debug "Javascript Reloaded #{@bundle_configs.size} bundle(s) (#{Time.now - start}s)"
|
33
39
|
end
|
34
40
|
|
35
41
|
def gather_files(config)
|
@@ -37,7 +43,15 @@ module Fusion
|
|
37
43
|
|
38
44
|
if(config[:input_files])
|
39
45
|
config[:input_files].each do |input_file|
|
40
|
-
|
46
|
+
@log.debug "Remote file? #{!(input_file =~ URI::regexp).nil?}"
|
47
|
+
|
48
|
+
if (input_file =~ URI::regexp).nil?
|
49
|
+
# Not a URL
|
50
|
+
input_files << File.join(@bundle_options[:project_path], input_file)
|
51
|
+
else
|
52
|
+
# This is a remote file, if we don't have it, get it
|
53
|
+
input_files << get_remote_file(input_file)
|
54
|
+
end
|
41
55
|
end
|
42
56
|
end
|
43
57
|
|
@@ -59,6 +73,32 @@ module Fusion
|
|
59
73
|
File.join(@bundle_options[:project_path], config[:output_file])
|
60
74
|
end
|
61
75
|
|
76
|
+
def get_remote_file(url)
|
77
|
+
filename = url.split("/").last
|
78
|
+
local_directory = File.join(@bundle_options[:project_path], ".remote")
|
79
|
+
local_file_path = File.join(local_directory, filename)
|
80
|
+
|
81
|
+
return local_file_path if File.exists?(local_file_path)
|
82
|
+
|
83
|
+
@log.debug "Fetching remote file (#{url})"
|
84
|
+
|
85
|
+
m = Mechanize.new
|
86
|
+
response = m.get(url)
|
87
|
+
|
88
|
+
raise Exception.new("Error downloading file (#{url}) -- returned code #{repsonse.code}") unless response.code == "200"
|
89
|
+
|
90
|
+
@log.debug "Got file (#{url})"
|
91
|
+
|
92
|
+
unless Dir.exists?(local_directory)
|
93
|
+
Dir.mkdir(local_directory)
|
94
|
+
end
|
95
|
+
|
96
|
+
File.open(local_file_path,"w") {|f| f << response.body}
|
97
|
+
|
98
|
+
local_file_path
|
99
|
+
end
|
100
|
+
|
101
|
+
|
62
102
|
end
|
63
103
|
|
64
104
|
class Quick < Basic
|
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
version: 0.0.3
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Sean Jezewski
|
@@ -10,7 +14,7 @@ autorequire:
|
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
16
|
|
13
|
-
date: 2011-06
|
17
|
+
date: 2011-07-06 00:00:00 -07:00
|
14
18
|
default_executable:
|
15
19
|
dependencies:
|
16
20
|
- !ruby/object:Gem::Dependency
|
@@ -21,9 +25,24 @@ dependencies:
|
|
21
25
|
requirements:
|
22
26
|
- - ">="
|
23
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
24
30
|
version: "0"
|
25
31
|
type: :runtime
|
26
32
|
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: mechanize
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :runtime
|
45
|
+
version_requirements: *id002
|
27
46
|
description: Fusion bundles and re-bundles your javascript in two modes - quick (dumb concatenation) and optimized (google closure compiler's SIMPLE_OPTIMIZATIONS level
|
28
47
|
email:
|
29
48
|
- sean@moovweb.com
|
@@ -34,6 +53,7 @@ extensions: []
|
|
34
53
|
extra_rdoc_files: []
|
35
54
|
|
36
55
|
files:
|
56
|
+
- README.md
|
37
57
|
- lib/fusion.rb
|
38
58
|
- compiler/compiler.jar
|
39
59
|
- compiler/COPYING
|
@@ -52,17 +72,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
52
72
|
requirements:
|
53
73
|
- - ">="
|
54
74
|
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
55
77
|
version: "0"
|
56
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
79
|
none: false
|
58
80
|
requirements:
|
59
81
|
- - ">="
|
60
82
|
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
61
85
|
version: "0"
|
62
86
|
requirements: []
|
63
87
|
|
64
88
|
rubyforge_project:
|
65
|
-
rubygems_version: 1.
|
89
|
+
rubygems_version: 1.3.7
|
66
90
|
signing_key:
|
67
91
|
specification_version: 3
|
68
92
|
summary: Simple javascript bundler plugin.
|