hanami-assets 0.0.0 → 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.
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