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 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
@@ -1,4 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "savanna"
3
3
  require "rack"
4
- Rack::Server.start app: Savanna::Server.new.to_app
4
+
5
+ case ARGV[0]
6
+ when 'start' then Savanna.start_server
7
+ when 'precompile' then Savanna.precompile_assets
8
+ else Savanna.start_server
9
+ end
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')
@@ -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
- self.add_path gem_root_path
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, ASSET_DIR
26
- add_append_path [@root_path, 'app'].join('/'), ASSET_DIR
27
- add_append_path [@root_path, 'vendor'].join('/'), ASSET_DIR
28
- ASSET_PATH.each { |path|
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
@@ -1,5 +1,6 @@
1
1
  require "rack"
2
2
  class Savanna::Server
3
+
3
4
  def initialize
4
5
  root_path = Dir.pwd
5
6
  @app = Rack::Builder.new {
@@ -1,3 +1,3 @@
1
1
  module Savanna
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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.3
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-06-21 00:00:00.000000000 Z
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: sprockets-helpers
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: sass
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: compass
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: coffee-script
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: ejs
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: 1.8.24
209
+ rubygems_version: 2.0.3
217
210
  signing_key:
218
- specification_version: 3
211
+ specification_version: 4
219
212
  summary: It makes sprockets environment.
220
213
  test_files: []