sass-embedded 1.0.17 → 1.0.18

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 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'