hanami-assets 0.0.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/LICENSE.md +22 -0
  4. data/README.md +426 -9
  5. data/bin/hanami-assets +22 -0
  6. data/hanami-assets.gemspec +26 -12
  7. data/lib/hanami/assets.rb +153 -2
  8. data/lib/hanami/assets/bundler.rb +173 -0
  9. data/lib/hanami/assets/cache.rb +58 -0
  10. data/lib/hanami/assets/compiler.rb +212 -0
  11. data/lib/hanami/assets/compressors/abstract.rb +119 -0
  12. data/lib/hanami/assets/compressors/builtin_javascript.rb +36 -0
  13. data/lib/hanami/assets/compressors/builtin_stylesheet.rb +57 -0
  14. data/lib/hanami/assets/compressors/closure_javascript.rb +25 -0
  15. data/lib/hanami/assets/compressors/javascript.rb +77 -0
  16. data/lib/hanami/assets/compressors/jsmin.rb +283 -0
  17. data/lib/hanami/assets/compressors/null_compressor.rb +19 -0
  18. data/lib/hanami/assets/compressors/sass_stylesheet.rb +38 -0
  19. data/lib/hanami/assets/compressors/stylesheet.rb +77 -0
  20. data/lib/hanami/assets/compressors/uglifier_javascript.rb +25 -0
  21. data/lib/hanami/assets/compressors/yui_javascript.rb +25 -0
  22. data/lib/hanami/assets/compressors/yui_stylesheet.rb +25 -0
  23. data/lib/hanami/assets/config/global_sources.rb +50 -0
  24. data/lib/hanami/assets/config/manifest.rb +112 -0
  25. data/lib/hanami/assets/config/sources.rb +77 -0
  26. data/lib/hanami/assets/configuration.rb +539 -0
  27. data/lib/hanami/assets/helpers.rb +733 -0
  28. data/lib/hanami/assets/precompiler.rb +67 -0
  29. data/lib/hanami/assets/version.rb +4 -1
  30. metadata +189 -17
  31. data/.gitignore +0 -9
  32. data/Gemfile +0 -4
  33. data/Rakefile +0 -2
  34. data/bin/console +0 -14
  35. data/bin/setup +0 -8
@@ -0,0 +1,67 @@
1
+ require 'hanami/assets/compiler'
2
+
3
+ module Hanami
4
+ module Assets
5
+ # Precompile all the assets, coming from all the applications and third
6
+ # party gems into the public directory of the project.
7
+ #
8
+ # @since 0.1.0
9
+ # @api private
10
+ class Precompiler
11
+ # Return a new instance
12
+ #
13
+ # @param configuration [Hanami::Assets::Configuration] the MAIN
14
+ # configuration of Hanami::Assets
15
+ #
16
+ # @param duplicates [Array<Hanami::Assets>] the duplicated frameworks
17
+ # (one for each application)
18
+ #
19
+ # @return [Hanami::Assets::Precompiler] a new instance
20
+ #
21
+ # @since 0.1.0
22
+ # @api private
23
+ def initialize(configuration, duplicates)
24
+ @configuration = configuration
25
+ @duplicates = duplicates
26
+ end
27
+
28
+ # Start the process
29
+ #
30
+ # @since 0.1.0
31
+ # @api private
32
+ def run
33
+ clear_public_directory
34
+ precompile
35
+ end
36
+
37
+ private
38
+
39
+ # @since 0.1.0
40
+ # @api private
41
+ def clear_public_directory
42
+ public_directory = Hanami::Assets.configuration.public_directory
43
+ public_directory.rmtree if public_directory.exist?
44
+ end
45
+
46
+ # @since 0.1.0
47
+ # @api private
48
+ def precompile
49
+ applications.each do |duplicate|
50
+ config = duplicate.configuration
51
+ config.compile true
52
+
53
+ config.files.each do |file|
54
+ Compiler.compile(config, file)
55
+ end
56
+ end
57
+ end
58
+
59
+ # @since 0.1.0
60
+ # @api private
61
+ def applications
62
+ @duplicates.empty? ?
63
+ [Hanami::Assets] : @duplicates
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,5 +1,8 @@
1
1
  module Hanami
2
2
  module Assets
3
- VERSION = "0.0.0"
3
+ # Defines the version
4
+ #
5
+ # @since 0.1.0
6
+ VERSION = '0.2.0'.freeze
4
7
  end
5
8
  end
metadata CHANGED
@@ -1,61 +1,232 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
+ - Trung Lê
9
+ - Alfonso Uceda
8
10
  autorequire:
9
- bindir: exe
11
+ bindir: bin
10
12
  cert_chain: []
11
- date: 2016-01-20 00:00:00.000000000 Z
13
+ date: 2016-01-22 00:00:00.000000000 Z
12
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hanami-utils
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.7'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '0.7'
29
+ - !ruby/object:Gem::Dependency
30
+ name: hanami-helpers
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0.3'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.3'
43
+ - !ruby/object:Gem::Dependency
44
+ name: tilt
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.2
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.0'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.0.2
13
63
  - !ruby/object:Gem::Dependency
14
64
  name: bundler
15
65
  requirement: !ruby/object:Gem::Requirement
16
66
  requirements:
17
67
  - - "~>"
18
68
  - !ruby/object:Gem::Version
19
- version: '1.11'
69
+ version: '1.6'
20
70
  type: :development
21
71
  prerelease: false
22
72
  version_requirements: !ruby/object:Gem::Requirement
23
73
  requirements:
24
74
  - - "~>"
25
75
  - !ruby/object:Gem::Version
26
- version: '1.11'
76
+ version: '1.6'
27
77
  - !ruby/object:Gem::Dependency
28
78
  name: rake
29
79
  requirement: !ruby/object:Gem::Requirement
30
80
  requirements:
31
81
  - - "~>"
32
82
  - !ruby/object:Gem::Version
33
- version: '10.0'
83
+ version: '10'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '10'
91
+ - !ruby/object:Gem::Dependency
92
+ name: minitest
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '5'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '5'
105
+ - !ruby/object:Gem::Dependency
106
+ name: yui-compressor
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.12'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.12'
119
+ - !ruby/object:Gem::Dependency
120
+ name: uglifier
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '2.7'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '2.7'
133
+ - !ruby/object:Gem::Dependency
134
+ name: closure-compiler
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '1.1'
34
140
  type: :development
35
141
  prerelease: false
36
142
  version_requirements: !ruby/object:Gem::Requirement
37
143
  requirements:
38
144
  - - "~>"
39
145
  - !ruby/object:Gem::Version
40
- version: '10.0'
41
- description: Hanami is a web framework for Ruby
146
+ version: '1.1'
147
+ - !ruby/object:Gem::Dependency
148
+ name: sass
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.4'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '3.4'
161
+ - !ruby/object:Gem::Dependency
162
+ name: coffee-script
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '2.3'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '2.3'
175
+ - !ruby/object:Gem::Dependency
176
+ name: babel-transpiler
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '0.7'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.7'
189
+ description: Assets management for Ruby web applications
42
190
  email:
43
191
  - me@lucaguidi.com
44
- executables: []
192
+ - trung.le@ruby-journal.com
193
+ - uceda73@gmail.com
194
+ executables:
195
+ - hanami-assets
45
196
  extensions: []
46
197
  extra_rdoc_files: []
47
198
  files:
48
- - ".gitignore"
49
- - Gemfile
199
+ - CHANGELOG.md
200
+ - LICENSE.md
50
201
  - README.md
51
- - Rakefile
52
- - bin/console
53
- - bin/setup
202
+ - bin/hanami-assets
54
203
  - hanami-assets.gemspec
55
204
  - lib/hanami/assets.rb
205
+ - lib/hanami/assets/bundler.rb
206
+ - lib/hanami/assets/cache.rb
207
+ - lib/hanami/assets/compiler.rb
208
+ - lib/hanami/assets/compressors/abstract.rb
209
+ - lib/hanami/assets/compressors/builtin_javascript.rb
210
+ - lib/hanami/assets/compressors/builtin_stylesheet.rb
211
+ - lib/hanami/assets/compressors/closure_javascript.rb
212
+ - lib/hanami/assets/compressors/javascript.rb
213
+ - lib/hanami/assets/compressors/jsmin.rb
214
+ - lib/hanami/assets/compressors/null_compressor.rb
215
+ - lib/hanami/assets/compressors/sass_stylesheet.rb
216
+ - lib/hanami/assets/compressors/stylesheet.rb
217
+ - lib/hanami/assets/compressors/uglifier_javascript.rb
218
+ - lib/hanami/assets/compressors/yui_javascript.rb
219
+ - lib/hanami/assets/compressors/yui_stylesheet.rb
220
+ - lib/hanami/assets/config/global_sources.rb
221
+ - lib/hanami/assets/config/manifest.rb
222
+ - lib/hanami/assets/config/sources.rb
223
+ - lib/hanami/assets/configuration.rb
224
+ - lib/hanami/assets/helpers.rb
225
+ - lib/hanami/assets/precompiler.rb
56
226
  - lib/hanami/assets/version.rb
57
227
  homepage: http://hanamirb.org
58
- licenses: []
228
+ licenses:
229
+ - MIT
59
230
  metadata: {}
60
231
  post_install_message:
61
232
  rdoc_options: []
@@ -65,7 +236,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
236
  requirements:
66
237
  - - ">="
67
238
  - !ruby/object:Gem::Version
68
- version: '0'
239
+ version: 2.0.0
69
240
  required_rubygems_version: !ruby/object:Gem::Requirement
70
241
  requirements:
71
242
  - - ">="
@@ -76,5 +247,6 @@ rubyforge_project:
76
247
  rubygems_version: 2.5.1
77
248
  signing_key:
78
249
  specification_version: 4
79
- summary: The web, with simplicity
250
+ summary: Assets management
80
251
  test_files: []
252
+ has_rdoc:
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in hanami-assets.gemspec
4
- gemspec
data/Rakefile DELETED
@@ -1,2 +0,0 @@
1
- require "bundler/gem_tasks"
2
- task :default => :spec
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "hanami/assets"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here