sass-embedded 1.0.17 → 1.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1974ef3b75975fec9f67f9b510a8b11556d999cc0af87224e27dacb918bd64f0
4
- data.tar.gz: fa1c85a80f9a24bc5251e77680f521ff22e2f41e5d9cd70e083040791cbbe379
3
+ metadata.gz: b701a29895bdd5f8ff05a4a23d972b1db3a64c20e29a75e02f6e3d52e7db762a
4
+ data.tar.gz: 900620c0e33b9ae961f231cb249b00a74d0306e74dfa06f35996571319e47328
5
5
  SHA512:
6
- metadata.gz: 88636d056f2cc41b7677351e265e6c8f7c097d278b1008bf650dfbcc417d33cd7514b7c0e8baf2b9f39590bb909a5f8292e4f0eca9ea01628a9a6e6a7398f7d5
7
- data.tar.gz: 4069bbc0ef1cc24668483dbff8dad25ce4b60de43868d57d59d35f056781a54382ee0c273956523a51ab772e0531722fc9d1c22f026f2790262fdb785bb2a65b
6
+ metadata.gz: 8a5984ffbe81012da00d2b25101d4b8a850057684f880fb25a4c76041a2d93a79b8888919d61487fb74b4b4480e6be9b39f7ee2554408e62ad3fa6adb27a3341
7
+ data.tar.gz: 6450eafe143ecb655308d8c3c859c2a90c013bd753495fd6b12db87bea4ccb9bd89c616957ed08e47ef3a04daf90437a41b1836cef01f609750b9663044a96a1
data/ext/sass/Rakefile CHANGED
@@ -1,17 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json'
4
- require 'open-uri'
5
- require 'open3'
6
3
  require 'rake/clean'
7
4
 
8
5
  task default: %i[install clean]
9
6
 
10
- task install: %w[sass_embedded embedded_sass_pb.rb]
7
+ task install: %w[sass_embedded embedded.rb embedded_sass_pb.rb]
11
8
 
12
9
  CLEAN.include %w[protoc.exe *.proto *.tar.gz *.zip]
13
10
 
14
- CLOBBER.include %w[sass_embedded embedded_sass_pb.rb]
11
+ CLOBBER.include %w[sass_embedded embedded.rb embedded_sass_pb.rb]
15
12
 
16
13
  file 'protoc.exe' do |t|
17
14
  fetch(ENV.fetch('PROTOC_BIN') { Configuration.default_protoc }, t.name)
@@ -24,12 +21,31 @@ file 'sass_embedded' do |t|
24
21
  rm archive
25
22
  end
26
23
 
27
- file 'embedded_sass.proto' => %w[sass_embedded] do |t|
24
+ file 'embedded.rb' => %w[sass_embedded] do |t|
25
+ path = 'sass_embedded/dart-sass-embedded'
26
+ path = "#{path}#{(Gem.win_platform? ? ['.exe', '.bat'] : ['', '.sh']).find { |ext| File.exist? "#{path}#{ext}" }}"
27
+
28
+ raise "#{path} not found" unless File.exist? path
29
+
30
+ File.write(t.name, <<~EMBEDDED_RB)
31
+ # frozen_string_literal: true
32
+
33
+ module Sass
34
+ class Embedded
35
+ class Compiler
36
+ PATH = File.absolute_path('#{path}', __dir__)
37
+ end
38
+ end
39
+ end
40
+ EMBEDDED_RB
41
+ end
42
+
43
+ file 'embedded_sass.proto' => %w[embedded.rb] do |t|
28
44
  fetch(ENV.fetch('SASS_EMBEDDED_PROTOCOL') { Configuration.default_sass_embedded_protocol }, t.name)
29
45
  end
30
46
 
31
47
  rule '_pb.rb' => %w[.proto protoc.exe] do |t|
32
- sh './protoc.exe', '--ruby_out=.', t.source
48
+ sh './protoc.exe', '--proto_path=.', '--ruby_out=.', t.source
33
49
  end
34
50
 
35
51
  # This is a FileUtils extension that defines several additional commands to be
@@ -52,6 +68,8 @@ module FileUtils
52
68
  end
53
69
 
54
70
  def fetch(uri_or_path, dest = nil)
71
+ require 'open-uri'
72
+
55
73
  begin
56
74
  uri = URI.parse(uri_or_path)
57
75
  path = URI::DEFAULT_PARSER.unescape(uri.path)
@@ -83,7 +101,7 @@ module FileUtils
83
101
 
84
102
  dest
85
103
  rescue StandardError
86
- raise "Failed to fetch #{uri_or_path}"
104
+ raise IOError, "Failed to fetch #{uri_or_path}"
87
105
  end
88
106
  end
89
107
 
@@ -108,9 +126,13 @@ module Configuration
108
126
  'i386'
109
127
  when /arm64|aarch64/
110
128
  'aarch64'
111
- when /^arm/
129
+ when /arm/
112
130
  # Ruby before 3.0 reports "arm" instead of "arm64" as host_cpu on darwin
113
131
  OS == 'darwin' ? 'aarch64' : 'arm'
132
+ when /ppc64le|powerpc64le/
133
+ 'powerpc64le'
134
+ when /s390x/
135
+ 's390x'
114
136
  else
115
137
  RbConfig::CONFIG['host_cpu']
116
138
  end
@@ -118,95 +140,93 @@ module Configuration
118
140
 
119
141
  private_constant :Platform
120
142
 
121
- class << self
122
- def default_sass_embedded
123
- repo = 'sass/dart-sass-embedded'
143
+ module_function
144
+
145
+ def default_sass_embedded
146
+ require 'json'
147
+
148
+ repo = 'https://github.com/sass/dart-sass-embedded'
149
+
150
+ spec = JSON.parse(File.read(File.absolute_path('package.json', __dir__)))
124
151
 
125
- spec = JSON.parse(File.read(File.absolute_path('package.json', __dir__)))
152
+ tag_name = spec['dependencies']['sass-embedded']
126
153
 
127
- tag_name = spec['dependencies']['sass-embedded']
154
+ message = "sass_embedded for #{Platform::OS}/#{Platform::ARCH} not available at #{repo}/releases/tag/#{tag_name}"
128
155
 
129
- os = case Platform::OS
130
- when 'darwin'
131
- 'macos'
132
- when 'linux'
133
- 'linux'
134
- when 'windows'
135
- 'windows'
156
+ os = case Platform::OS
157
+ when 'darwin'
158
+ 'macos'
159
+ when 'linux'
160
+ 'linux'
161
+ when 'windows'
162
+ 'windows'
163
+ else
164
+ raise NotImplementedError, message
165
+ end
166
+
167
+ arch = case Platform::ARCH
168
+ when 'i386'
169
+ 'ia32'
170
+ when 'x86_64'
171
+ 'x64'
172
+ when 'aarch64'
173
+ Platform::OS == 'darwin' ? 'x64' : 'arm64'
136
174
  else
137
- raise release_asset_not_available_error(repo, tag_name)
175
+ raise NotImplementedError, message
138
176
  end
139
177
 
140
- arch = case Platform::ARCH
141
- when 'x86_64'
142
- 'x64'
143
- when 'i386'
144
- 'ia32'
145
- when 'aarch64'
146
- Platform::OS == 'darwin' ? 'x64' : 'arm64'
147
- else
148
- raise release_asset_not_available_error(repo, tag_name)
149
- end
150
-
151
- ext = case os
152
- when 'windows'
153
- 'zip'
154
- else
155
- 'tar.gz'
156
- end
157
-
158
- "https://github.com/#{repo}/releases/download/#{tag_name}/sass_embedded-#{tag_name}-#{os}-#{arch}.#{ext}"
159
- end
178
+ ext = Gem.win_platform? ? 'zip' : 'tar.gz'
179
+
180
+ "#{repo}/releases/download/#{tag_name}/sass_embedded-#{tag_name}-#{os}-#{arch}.#{ext}"
181
+ end
160
182
 
161
- def default_protoc
162
- repo = 'protocolbuffers/protobuf'
183
+ def default_protoc
184
+ repo = 'https://repo.maven.apache.org/maven2/com/google/protobuf/protoc'
163
185
 
164
- version = Gem::Dependency.new('google-protobuf').to_spec.version
186
+ version = Gem::Dependency.new('google-protobuf').to_spec.version
165
187
 
166
- tag_name = "v#{version}"
188
+ message = "protoc for #{Platform::OS}/#{Platform::ARCH} not available at #{repo}/#{version}"
167
189
 
168
- os = case Platform::OS
169
- when 'darwin'
170
- 'osx'
171
- when 'linux'
172
- 'linux'
173
- when 'windows'
174
- 'windows'
190
+ os = case Platform::OS
191
+ when 'darwin'
192
+ 'osx'
193
+ when 'linux'
194
+ 'linux'
195
+ when 'windows'
196
+ 'windows'
197
+ else
198
+ raise NotImplementedError, message
199
+ end
200
+
201
+ arch = case Platform::ARCH
202
+ when 'i386'
203
+ 'x86_32'
204
+ when 'x86_64'
205
+ 'x86_64'
206
+ when 'aarch64'
207
+ 'aarch_64'
208
+ when 'powerpc64le'
209
+ 'ppcle_64'
210
+ when 's390x'
211
+ 's390_64'
175
212
  else
176
- raise release_asset_not_available_error(repo, tag_name)
213
+ raise NotImplementedError, message
177
214
  end
178
215
 
179
- arch = case Platform::ARCH
180
- when 'x86_64'
181
- 'x86_64'
182
- when 'i386'
183
- 'x86_32'
184
- when 'aarch64'
185
- 'aarch_64'
186
- else
187
- raise release_asset_not_available_error(repo, tag_name)
188
- end
189
-
190
- "https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/#{version}/protoc-#{version}-#{os}-#{arch}.exe"
191
- end
216
+ "#{repo}/#{version}/protoc-#{version}-#{os}-#{arch}.exe"
217
+ end
192
218
 
193
- def default_sass_embedded_protocol
194
- stdout, stderr, status = Open3.capture3(
195
- File.absolute_path("sass_embedded/dart-sass-embedded#{Gem.win_platform? ? '.bat' : ''}", __dir__), '--version'
196
- )
197
- raise stderr unless status.success?
219
+ def default_sass_embedded_protocol
220
+ require 'json'
221
+ require 'open3'
222
+ require_relative 'embedded'
198
223
 
199
- tag_name = JSON.parse(stdout)['protocolVersion']
200
- "https://github.com/sass/embedded-protocol/raw/#{tag_name}/embedded_sass.proto"
201
- end
224
+ stdout, stderr, status = Open3.capture3(Sass::Embedded::Compiler::PATH, '--version')
202
225
 
203
- private
226
+ raise stderr unless status.success?
204
227
 
205
- def release_asset_not_available_error(repo, tag_name)
206
- NotImplementedError.new(
207
- "Release asset for #{Platform::OS} #{Platform::ARCH} "\
208
- "not available at https://github.com/#{repo}/releases/tag/#{tag_name}"
209
- )
210
- end
228
+ tag_name = JSON.parse(stdout)['protocolVersion']
229
+
230
+ "https://github.com/sass/embedded-protocol/raw/#{tag_name}/embedded_sass.proto"
211
231
  end
212
232
  end
@@ -8,10 +8,6 @@ module Sass
8
8
  #
9
9
  # It runs the `dart-sass-embedded` process.
10
10
  class Compiler
11
- PATH = File.absolute_path(
12
- "../../../ext/sass/sass_embedded/dart-sass-embedded#{Gem.win_platform? ? '.bat' : ''}", __dir__
13
- )
14
-
15
11
  def initialize
16
12
  @stdin, @stdout, @stderr, @wait_thread = Open3.popen3(PATH)
17
13
  @stdin.binmode
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sass
4
4
  class Embedded
5
- VERSION = '1.0.17'
5
+ VERSION = '1.0.18'
6
6
  end
7
7
  end
data/lib/sass/embedded.rb CHANGED
@@ -1,5 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../ext/sass/embedded'
4
+ require_relative '../../ext/sass/embedded_sass_pb'
5
+ require_relative 'compile_error'
6
+ require_relative 'compile_result'
7
+ require_relative 'embedded/async'
8
+ require_relative 'embedded/channel'
9
+ require_relative 'embedded/compiler'
10
+ require_relative 'embedded/dispatcher'
11
+ require_relative 'embedded/host'
12
+ require_relative 'embedded/host/function_registry'
13
+ require_relative 'embedded/host/importer_registry'
14
+ require_relative 'embedded/host/logger_registry'
15
+ require_relative 'embedded/host/value_protofier'
16
+ require_relative 'embedded/protofier'
17
+ require_relative 'embedded/structifier'
18
+ require_relative 'embedded/varint'
19
+ require_relative 'embedded/version'
20
+ require_relative 'logger'
21
+ require_relative 'logger/source_location'
22
+ require_relative 'logger/source_span'
23
+ require_relative 'script_error'
24
+ require_relative 'value'
25
+ require_relative 'value/list'
26
+ require_relative 'value/argument_list'
27
+ require_relative 'value/boolean'
28
+ require_relative 'value/color'
29
+ require_relative 'value/function'
30
+ require_relative 'value/fuzzy_math'
31
+ require_relative 'value/map'
32
+ require_relative 'value/null'
33
+ require_relative 'value/number'
34
+ require_relative 'value/number/unit'
35
+ require_relative 'value/string'
36
+
3
37
  module Sass
4
38
  # The {Embedded} host for using dart-sass-embedded. Each instance creates
5
39
  # its own communication {Channel} with a dedicated compiler process.
data/lib/sass.rb CHANGED
@@ -1,38 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'sass/compile_error'
4
- require_relative 'sass/compile_result'
5
3
  require_relative 'sass/embedded'
6
- require_relative 'sass/embedded/async'
7
- require_relative 'sass/embedded/channel'
8
- require_relative 'sass/embedded/compiler'
9
- require_relative 'sass/embedded/dispatcher'
10
- require_relative 'sass/embedded/host'
11
- require_relative 'sass/embedded/host/function_registry'
12
- require_relative 'sass/embedded/host/importer_registry'
13
- require_relative 'sass/embedded/host/logger_registry'
14
- require_relative 'sass/embedded/host/value_protofier'
15
- require_relative 'sass/embedded/protofier'
16
- require_relative 'sass/embedded/structifier'
17
- require_relative 'sass/embedded/varint'
18
- require_relative 'sass/embedded/version'
19
- require_relative 'sass/embedded_protocol'
20
- require_relative 'sass/logger'
21
- require_relative 'sass/logger/source_location'
22
- require_relative 'sass/logger/source_span'
23
- require_relative 'sass/script_error'
24
- require_relative 'sass/value'
25
- require_relative 'sass/value/list'
26
- require_relative 'sass/value/argument_list'
27
- require_relative 'sass/value/boolean'
28
- require_relative 'sass/value/color'
29
- require_relative 'sass/value/function'
30
- require_relative 'sass/value/fuzzy_math'
31
- require_relative 'sass/value/map'
32
- require_relative 'sass/value/null'
33
- require_relative 'sass/value/number'
34
- require_relative 'sass/value/number/unit'
35
- require_relative 'sass/value/string'
36
4
 
37
5
  # The Sass module.
38
6
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-09 00:00:00.000000000 Z
11
+ date: 2022-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.25.0
61
+ version: 1.26.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.25.0
68
+ version: 1.26.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-performance
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -140,7 +140,6 @@ files:
140
140
  - lib/sass/embedded/structifier.rb
141
141
  - lib/sass/embedded/varint.rb
142
142
  - lib/sass/embedded/version.rb
143
- - lib/sass/embedded_protocol.rb
144
143
  - lib/sass/logger.rb
145
144
  - lib/sass/logger/source_location.rb
146
145
  - lib/sass/logger/source_span.rb
@@ -161,8 +160,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
161
160
  licenses:
162
161
  - MIT
163
162
  metadata:
164
- documentation_uri: https://www.rubydoc.info/gems/sass-embedded/1.0.17
165
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.0.17
163
+ documentation_uri: https://www.rubydoc.info/gems/sass-embedded/1.0.18
164
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v1.0.18
166
165
  funding_uri: https://github.com/sponsors/ntkme
167
166
  post_install_message:
168
167
  rdoc_options: []
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../ext/sass/embedded_sass_pb'