bagger 0.1.2 → 0.2.0
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 +22 -1
- data/ROADMAP.md +10 -0
- data/lib/bagger/packager.rb +20 -5
- data/lib/bagger/version.rb +1 -1
- data/test/bagger_test.rb +42 -2
- metadata +16 -16
data/README.md
CHANGED
@@ -44,6 +44,13 @@ cache.manifest
|
|
44
44
|
# the behavior of the stylesheets and javascripts might change
|
45
45
|
stylesheets = ["css/style.css", "css/reset.css"]
|
46
46
|
javascripts = ["js/app.js", "js/utils.js"]
|
47
|
+
|
48
|
+
# define cache manifest bundles for different devices
|
49
|
+
# for convencien, the manfiest defined with `cache_manifest_path`
|
50
|
+
# will always contain all resources
|
51
|
+
ipad_resources = ["images/troll-big.png"]
|
52
|
+
iphone_retina_resources = ["images/troll-retina.png"]
|
53
|
+
desktop_browser_resources = ["images/troll.png"]
|
47
54
|
|
48
55
|
# make sure the target directory exists
|
49
56
|
FileUtils.mkdir_p target_dir
|
@@ -67,7 +74,21 @@ cache.manifest
|
|
67
74
|
:files => javascripts
|
68
75
|
}
|
69
76
|
]
|
70
|
-
}
|
77
|
+
},
|
78
|
+
:cache_manifests => [
|
79
|
+
{
|
80
|
+
:target_path => 'cache/ipad-cache.manifest',
|
81
|
+
:files => ipad_resources
|
82
|
+
},
|
83
|
+
{
|
84
|
+
:target_path => 'cache/retina-cache.manifest',
|
85
|
+
:files => iphone_retina_resources
|
86
|
+
},
|
87
|
+
{
|
88
|
+
:target_path => 'cache/desktop.manifest',
|
89
|
+
:files => desktop_browser_resources
|
90
|
+
}
|
91
|
+
]
|
71
92
|
}
|
72
93
|
|
73
94
|
# run it
|
data/ROADMAP.md
CHANGED
@@ -27,6 +27,11 @@
|
|
27
27
|
|
28
28
|
## v 0.2.0
|
29
29
|
|
30
|
+
* Support for multiple cache manifests (useful if you have different
|
31
|
+
resources for different devices)
|
32
|
+
|
33
|
+
## v 1.0.0
|
34
|
+
|
30
35
|
* generate custom manifest files e.g with support for file size.
|
31
36
|
This can be useful for preloaders
|
32
37
|
|
@@ -36,3 +41,8 @@
|
|
36
41
|
:size => '391'
|
37
42
|
}
|
38
43
|
}
|
44
|
+
* Support for lesscss as a preprocessor
|
45
|
+
* Support for sass as a preprocessor
|
46
|
+
* Support for gzipping files
|
47
|
+
|
48
|
+
|
data/lib/bagger/packager.rb
CHANGED
@@ -52,7 +52,7 @@ module Bagger
|
|
52
52
|
version_files
|
53
53
|
combine_css
|
54
54
|
combine_js
|
55
|
-
|
55
|
+
generate_cache_manifests
|
56
56
|
write_manifest
|
57
57
|
end
|
58
58
|
|
@@ -130,23 +130,38 @@ module Bagger
|
|
130
130
|
File.open(File.join(@target_dir, javascript_path), 'w'){|f| f.write compressed}
|
131
131
|
end
|
132
132
|
|
133
|
+
def generate_cache_manifests
|
134
|
+
cache_manifests = @options[:cache_manifests] || []
|
135
|
+
if @cache_manifest_path
|
136
|
+
cache_manifests << {
|
137
|
+
:target_path => @cache_manifest_path,
|
138
|
+
:files => @manifest.keys
|
139
|
+
}
|
140
|
+
end
|
141
|
+
cache_manifests.each do |cache_manifest|
|
142
|
+
generate_cache_manifest(cache_manifest)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
133
146
|
# IMPORTANT:html 5 cache manifest should not be cached
|
134
147
|
# because that would treat it as a new manifest with
|
135
148
|
# new resources discarding the ones already downloaded
|
136
149
|
# http://diveintohtml5.org/offline.html
|
137
|
-
def generate_cache_manifest
|
138
|
-
path = File.join(@target_dir,
|
150
|
+
def generate_cache_manifest(cache_manifest)
|
151
|
+
path = File.join(@target_dir, cache_manifest[:target_path])
|
139
152
|
FileUtils.mkdir_p(File.dirname(path))
|
140
153
|
File.open(path, 'w') do |f|
|
141
154
|
f.puts 'CACHE MANIFEST'
|
142
155
|
f.puts ''
|
143
156
|
f.puts '# Explicitely cached entries'
|
144
|
-
|
157
|
+
cache_manifest[:files].each do |relative_path|
|
158
|
+
f.puts @manifest[File.join('/', relative_path)]
|
159
|
+
end
|
145
160
|
f.puts ''
|
146
161
|
f.puts 'NETWORK:'
|
147
162
|
f.puts '*'
|
148
163
|
end
|
149
|
-
add_to_manifest(File.join("/",
|
164
|
+
add_to_manifest(File.join("/", cache_manifest[:target_path]), cache_manifest[:target_path])
|
150
165
|
end
|
151
166
|
|
152
167
|
protected
|
data/lib/bagger/version.rb
CHANGED
data/test/bagger_test.rb
CHANGED
@@ -105,6 +105,46 @@ class BaggerTest < Test::Unit::TestCase
|
|
105
105
|
expected_path = File.join(@target_dir, manifest_path)
|
106
106
|
assert File.exists?(expected_path), 'custom cache manifest path not found'
|
107
107
|
end
|
108
|
+
|
109
|
+
context 'packages' do
|
110
|
+
setup do
|
111
|
+
@images_dir = File.join(@source_dir, 'images')
|
112
|
+
FileUtils.mkdir_p(@images_dir)
|
113
|
+
FileUtils.touch(File.join(@images_dir, 'retina.png'))
|
114
|
+
FileUtils.touch(File.join(@images_dir, 'ipad.png'))
|
115
|
+
|
116
|
+
@manifest_options = {
|
117
|
+
:cache_manifests => [
|
118
|
+
{
|
119
|
+
:target_path => 'cache/retina-cache.manifest',
|
120
|
+
:files => ['images/retina.png']
|
121
|
+
},
|
122
|
+
{
|
123
|
+
:target_path => 'cache/ipad-cache.manifest',
|
124
|
+
:files => ['images/ipad.png']
|
125
|
+
}
|
126
|
+
]
|
127
|
+
}
|
128
|
+
end
|
129
|
+
|
130
|
+
should 'add the cache files' do
|
131
|
+
Bagger.bagit!(default_options.merge(@manifest_options))
|
132
|
+
assert File.exists?(File.join(@target_dir, 'cache/retina-cache.manifest'))
|
133
|
+
assert File.exists?(File.join(@target_dir, 'cache/ipad-cache.manifest'))
|
134
|
+
end
|
135
|
+
|
136
|
+
should 'add the files listed to the respective manifest' do
|
137
|
+
Bagger.bagit!(default_options.merge(@manifest_options))
|
138
|
+
cache_file_content = File.open(File.join(@target_dir, 'cache/retina-cache.manifest')){|f| f.read}
|
139
|
+
assert cache_file_content.include?(manifest['/images/retina.png'])
|
140
|
+
end
|
141
|
+
|
142
|
+
should 'only add the files listed' do
|
143
|
+
Bagger.bagit!(default_options.merge(@manifest_options))
|
144
|
+
cache_file_content = File.open(File.join(@target_dir, 'cache/retina-cache.manifest')){|f| f.read}
|
145
|
+
assert !cache_file_content.include?(manifest['/images/ipad.png'])
|
146
|
+
end
|
147
|
+
end
|
108
148
|
end
|
109
149
|
|
110
150
|
context 'css files' do
|
@@ -178,8 +218,8 @@ class BaggerTest < Test::Unit::TestCase
|
|
178
218
|
}
|
179
219
|
|
180
220
|
#multipleUrls {
|
181
|
-
background-image: url(
|
182
|
-
url(
|
221
|
+
background-image: url(../images/relative.png) no-repeat 0% 20%,
|
222
|
+
url(/images/multiple.png) no-repeat -20px 0;
|
183
223
|
}
|
184
224
|
|
185
225
|
#absoluteUrl {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bagger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
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-09-
|
12
|
+
date: 2011-09-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70313945800580 !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: *70313945800580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: addressable
|
27
|
-
requirement: &
|
27
|
+
requirement: &70313945800160 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70313945800160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: uglifier
|
38
|
-
requirement: &
|
38
|
+
requirement: &70313945799720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70313945799720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rainpress
|
49
|
-
requirement: &
|
49
|
+
requirement: &70313945799280 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70313945799280
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &70313945798860 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70313945798860
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: shoulda-context
|
71
|
-
requirement: &
|
71
|
+
requirement: &70313945798440 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70313945798440
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: mocha
|
82
|
-
requirement: &
|
82
|
+
requirement: &70313945798020 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70313945798020
|
91
91
|
description: ! 'A framework agnostic packaging solution for your assets: version files,
|
92
92
|
combine them, minify them and create a manifest'
|
93
93
|
email:
|