savanna 0.0.3 → 0.0.4
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.
- 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: []
|