savanna 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/README.md +13 -0
- data/bin/savanna +6 -1
- data/lib/savanna.rb +9 -0
- data/lib/savanna/assets.rb +56 -10
- data/lib/savanna/exceptions.rb +11 -0
- data/lib/savanna/server.rb +1 -0
- data/lib/savanna/version.rb +1 -1
- data/savanna.gemspec +2 -1
- metadata +25 -32
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Yjg1MTM4MzQ5MjY2NWY1NzEzM2Y1OTZlMDcxZjFhZWMwODY0NzZhOA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OTI4MDViNTg1MDRkZmYyMjJmYmZhZmM5OTgyMGI0NWY1YTkyZDllMg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MWE0ODcyNDA1M2QwNDZhODdhM2U5ZmRhNmM5OWYwNDFiNjdiMTU5YmE2ZGM1
|
10
|
+
ZmVkMWI1OTZiYTAyNTAyMjRlNTU3ZWUxZTU4MGE2OGNkMmI1NTkwMjY3OWQz
|
11
|
+
NGZmMDJjYmI4YmU4Mjg2NTA3ZmE0M2FjOWE5OWIxNmM1MzhkM2I=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MzhhNmQ1OTAzNzhiMTMyY2I4MTJjMThiMjgxYTQ3OTMyYWIzMTI4NjcwODRh
|
14
|
+
ZGEyYTY5ZGIyMmZkNTBlZjhiZWNmODhkZWIxYjYwYWZiZDVlZmI1ZDYzMWU3
|
15
|
+
N2VlZmEzNzM1ODc3ZjdhZjZkNzg4NmYzM2E5NWNlNGMyZmFjNTI=
|
data/README.md
CHANGED
@@ -16,6 +16,13 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install savanna
|
18
18
|
|
19
|
+
Make these directories and put your stuff:
|
20
|
+
|
21
|
+
assets/javascripts
|
22
|
+
assets/stylesheets
|
23
|
+
assets/images
|
24
|
+
www (put static html)
|
25
|
+
|
19
26
|
## Usage
|
20
27
|
|
21
28
|
execute this:
|
@@ -26,6 +33,12 @@ then open localhost:8080 or execute this:
|
|
26
33
|
|
27
34
|
$ open http://localhost:8080
|
28
35
|
|
36
|
+
to make precompiled assets
|
37
|
+
|
38
|
+
$ savanna precompile
|
39
|
+
|
40
|
+
it should make compressed javascript, css assets and copy images in the `www/assets` directory.
|
41
|
+
|
29
42
|
|
30
43
|
## Contributing
|
31
44
|
|
data/bin/savanna
CHANGED
data/lib/savanna.rb
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
require "savanna/version"
|
2
2
|
require "savanna/assets"
|
3
|
+
require "savanna/exceptions"
|
3
4
|
require "savanna/server"
|
4
5
|
require "rubygems"
|
5
6
|
require "bundler"
|
6
7
|
|
7
8
|
module Savanna
|
9
|
+
def self.start_server
|
10
|
+
Rack::Server.start app: Savanna::Server.new.to_app
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.precompile_assets
|
14
|
+
assets = Savanna::Assets.new(root_path: Dir.pwd, precompile: true)
|
15
|
+
assets.precompile
|
16
|
+
end
|
8
17
|
end
|
9
18
|
|
10
19
|
Bundler.require(:default) if File.exists?('Gemfile')
|
data/lib/savanna/assets.rb
CHANGED
@@ -3,35 +3,81 @@ require 'coffee-script'
|
|
3
3
|
require "compass"
|
4
4
|
require "sprockets"
|
5
5
|
require "sprockets-sass"
|
6
|
+
require "yui/compressor"
|
7
|
+
require "uglifier"
|
8
|
+
require "pathname"
|
6
9
|
|
7
10
|
class Savanna::Assets
|
8
11
|
ASSET_PATH = []
|
9
12
|
ASSET_DIR = 'assets'
|
10
13
|
attr_accessor :sprockets, :root_path
|
11
14
|
|
12
|
-
def self.add_path (path)
|
13
|
-
ASSET_PATH << path
|
14
|
-
end
|
15
|
-
|
16
15
|
def self.add_path_from_gem (path)
|
17
16
|
gem_root_path = File.expand_path('../../', path)
|
18
|
-
|
17
|
+
ASSET_PATH << gem_root_path
|
19
18
|
end
|
20
19
|
|
21
20
|
def initialize(options)
|
22
21
|
@root_path = options[:root_path]
|
23
22
|
@sprockets = Sprockets::Environment.new { |env| env.logger = Logger.new(STDOUT) }
|
24
23
|
|
25
|
-
add_append_path @root_path
|
26
|
-
|
27
|
-
|
28
|
-
ASSET_PATH.each
|
24
|
+
add_append_path @root_path
|
25
|
+
|
26
|
+
ASSET_PATH << @root_path
|
27
|
+
ASSET_PATH.each do |path|
|
29
28
|
add_append_path [path, 'app'].join('/')
|
30
29
|
add_append_path [path, 'vendor'].join('/')
|
31
|
-
|
30
|
+
end
|
31
|
+
|
32
|
+
if options[:precompile]
|
33
|
+
@sprockets.css_compressor = ::YUI::CssCompressor.new
|
34
|
+
@sprockets.js_compressor = ::Uglifier.new mangle: true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def precompile
|
39
|
+
precompile_files = load_precompile_files
|
40
|
+
output_dir = File.join @root_path, 'www', 'assets'
|
41
|
+
image_dirs = @sprockets.paths.select { |path| path =~ /\/images$/ }
|
42
|
+
|
43
|
+
FileUtils.rm_rf output_dir
|
44
|
+
|
45
|
+
image_dirs.each do |image_dir|
|
46
|
+
copy_images image_dir, to: output_dir
|
47
|
+
end
|
32
48
|
|
49
|
+
precompile_files.each do |file|
|
50
|
+
asset = @sprockets[file]
|
51
|
+
output_file = Pathname.new(output_dir).join file
|
52
|
+
FileUtils.mkdir_p output_file.dirname
|
53
|
+
asset.write_to output_file
|
54
|
+
end
|
33
55
|
end
|
34
56
|
|
57
|
+
def copy_images (original_dir, options)
|
58
|
+
FileUtils.cp_r Dir["#{original_dir}/*"], options[:to]
|
59
|
+
rescue
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def load_precompile_files
|
64
|
+
precompile_files = []
|
65
|
+
|
66
|
+
list_file = File.join(@root_path, 'savanna')
|
67
|
+
if File.exists? list_file
|
68
|
+
File.open(list_file).each_line do |line|
|
69
|
+
precompile_files << line.gsub(/\n/, '')
|
70
|
+
end
|
71
|
+
raise EmptyPrecompileList if precompile_files.empty?
|
72
|
+
else
|
73
|
+
raise FileNotFound
|
74
|
+
end
|
75
|
+
|
76
|
+
return precompile_files
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
|
35
81
|
protected
|
36
82
|
def add_append_path (path, dir = 'assets')
|
37
83
|
puts "Appended path: #{[path, dir].join('/')}"
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Savanna::Assets::FileNotFound < Exception
|
2
|
+
def initialize
|
3
|
+
super "Please make 'savanna' file to precompile, check this: https://github.com/shawnjung/savanna"
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
class Savanna::Assets::EmptyPrecompileList < Exception
|
8
|
+
def initialize
|
9
|
+
super "No precompile files in the 'savanna' file."
|
10
|
+
end
|
11
|
+
end
|
data/lib/savanna/server.rb
CHANGED
data/lib/savanna/version.rb
CHANGED
data/savanna.gemspec
CHANGED
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'rack'
|
24
24
|
spec.add_dependency 'sprockets'
|
25
25
|
spec.add_dependency 'sprockets-sass'
|
26
|
-
spec.add_dependency 'sprockets-helpers'
|
27
26
|
spec.add_dependency 'sass'
|
28
27
|
spec.add_dependency 'compass'
|
29
28
|
spec.add_dependency 'coffee-script'
|
30
29
|
spec.add_dependency 'ejs'
|
30
|
+
spec.add_dependency 'yui-compressor'
|
31
|
+
spec.add_dependency 'uglifier'
|
31
32
|
|
32
33
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: savanna
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shawn Jung
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ! '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ! '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rack
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: sprockets
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ! '>='
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ! '>='
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -78,7 +69,6 @@ dependencies:
|
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: sprockets-sass
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
73
|
- - ! '>='
|
84
74
|
- !ruby/object:Gem::Version
|
@@ -86,15 +76,13 @@ dependencies:
|
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
80
|
- - ! '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
84
|
+
name: sass
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
87
|
- - ! '>='
|
100
88
|
- !ruby/object:Gem::Version
|
@@ -102,15 +90,13 @@ dependencies:
|
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
94
|
- - ! '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
98
|
+
name: compass
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ! '>='
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,15 +104,13 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ! '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
112
|
+
name: coffee-script
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ! '>='
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,15 +118,13 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ! '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
126
|
+
name: ejs
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - ! '>='
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,15 +132,27 @@ dependencies:
|
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - ! '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
|
-
name:
|
140
|
+
name: yui-compressor
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: uglifier
|
160
155
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
156
|
requirements:
|
163
157
|
- - ! '>='
|
164
158
|
- !ruby/object:Gem::Version
|
@@ -166,7 +160,6 @@ dependencies:
|
|
166
160
|
type: :runtime
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
163
|
requirements:
|
171
164
|
- - ! '>='
|
172
165
|
- !ruby/object:Gem::Version
|
@@ -189,32 +182,32 @@ files:
|
|
189
182
|
- lib/savanna.rb
|
190
183
|
- lib/savanna/.DS_Store
|
191
184
|
- lib/savanna/assets.rb
|
185
|
+
- lib/savanna/exceptions.rb
|
192
186
|
- lib/savanna/server.rb
|
193
187
|
- lib/savanna/version.rb
|
194
188
|
- savanna.gemspec
|
195
189
|
homepage: ''
|
196
190
|
licenses:
|
197
191
|
- MIT
|
192
|
+
metadata: {}
|
198
193
|
post_install_message:
|
199
194
|
rdoc_options: []
|
200
195
|
require_paths:
|
201
196
|
- lib
|
202
197
|
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
-
none: false
|
204
198
|
requirements:
|
205
199
|
- - ! '>='
|
206
200
|
- !ruby/object:Gem::Version
|
207
201
|
version: '0'
|
208
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
203
|
requirements:
|
211
204
|
- - ! '>='
|
212
205
|
- !ruby/object:Gem::Version
|
213
206
|
version: '0'
|
214
207
|
requirements: []
|
215
208
|
rubyforge_project:
|
216
|
-
rubygems_version:
|
209
|
+
rubygems_version: 2.0.3
|
217
210
|
signing_key:
|
218
|
-
specification_version:
|
211
|
+
specification_version: 4
|
219
212
|
summary: It makes sprockets environment.
|
220
213
|
test_files: []
|