sass-embedded 0.7.10 → 0.7.14

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: 1fe00b57149da1071f98028f159b3de560fc365ae0914c96ee7f19fb12b8cacb
4
- data.tar.gz: 3891fa06053620354a7714d87a69b395c7c65b174def0eb6b8bdebb782efc45f
3
+ metadata.gz: 5fcfb496509a39af1ede196579891f3f618c8ae112a636abded14712811acbc6
4
+ data.tar.gz: ce47457cf14a9f79129a638909785a3edda3c93835fdd2d5d29a1d721c7dd3ba
5
5
  SHA512:
6
- metadata.gz: 947acbb1be1109a74619248998542fc117a9676f02d43b473d7546eb6e905953abda62f661f1dc2defc389a6439b8bdd69fa1b5cf68372d84172e1e87165d5e5
7
- data.tar.gz: '0916a7093b12b3e6fbcf9da1b4d5b3eb5190905cbbea4a518d465feae94dc9f1a084874cfde49fc92980ffaca8c4333844a7f35e4f3970cf9efe35abeb40fbdf'
6
+ metadata.gz: 8233f64b021b3a51c199383ad9327a5d9ddf4df340c151a761a2fa54cd403e96c003d7922ea8bd7ead2c5b66be15c101d297528d81fe7b597e36527df4a5637b
7
+ data.tar.gz: '058dfbfbfe9afe0f39d23191c943ca00ebdcd94706fb0d9cfca68ecd347d45ed935c011e387812c4fe2579c1f16b42cf9f183b83dd74c7166e2ebcb5f8a54200'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ module Dependencies
5
+ REQUIREMENTS = {
6
+ 'protocolbuffers/protobuf' => '~> 3.17',
7
+ 'sass/embedded-protocol' => '~> 1.0.0-beta.12',
8
+ 'sass/dart-sass-embedded' => '~> 1.0.0-beta.10'
9
+ }.freeze
10
+ end
11
+ end
data/ext/extconf.rb CHANGED
@@ -5,13 +5,14 @@ require 'mkmf'
5
5
  require 'json'
6
6
  require 'open-uri'
7
7
  require 'fileutils'
8
+ require_relative './dependencies'
8
9
  require_relative '../lib/sass/platform'
9
10
 
10
11
  module Sass
11
12
  # The dependency downloader. This downloads all the dependencies during gem
12
13
  # installation. The companion Makefile then unpacks all downloaded
13
- # dependencies. By default it downloads the latest release of each
14
- # dependency from GitHub releases.
14
+ # dependencies. By default it downloads the release of each dependency
15
+ # from GitHub releases.
15
16
  #
16
17
  # It is possible to specify an alternative source or version of each
17
18
  # dependency. Local sources can be used for offline installation.
@@ -23,9 +24,9 @@ module Sass
23
24
  # --with-sass-embedded-protocol=file:///path/to/embedded_sass.proto
24
25
  class Extconf
25
26
  def initialize
26
- get_with_config('protoc', true) { latest_protoc }
27
- get_with_config('sass-embedded', true) { latest_sass_embedded }
28
- get_with_config('sass-embedded-protocol', true) { latest_sass_embedded_protocol }
27
+ get_with_config('protoc', true) { default_protoc }
28
+ get_with_config('sass-embedded', true) { default_sass_embedded }
29
+ get_with_config('sass-embedded-protocol', true) { default_sass_embedded_protocol }
29
30
  end
30
31
 
31
32
  private
@@ -52,6 +53,7 @@ module Sass
52
53
  if uri.is_a?(URI::File) || uri.instance_of?(URI::Generic)
53
54
  FileUtils.copy_file uri.path, path
54
55
  elsif uri.respond_to? :open
56
+ puts "curl -fsSLo #{path} -- #{uri}"
55
57
  uri.open do |source|
56
58
  File.open(path, 'wb') do |destination|
57
59
  destination.write source.read
@@ -61,28 +63,42 @@ module Sass
61
63
  raise
62
64
  end
63
65
  rescue StandardError
64
- raise "Failed to get: #{uri}"
66
+ raise "Failed to get: #{uri_s}"
65
67
  end
66
68
 
67
- def latest_release(repo, prerelease: false)
68
- if prerelease
69
- headers = {}
70
- headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
71
- URI.parse("https://api.github.com/repos/#{repo}/releases").open(headers) do |file|
72
- JSON.parse(file.read)[0]['tag_name']
73
- end
74
- else
69
+ def resolve_tag_name(repo, *requirements, gh_release: true)
70
+ requirements = Gem::Requirement.create(*requirements)
71
+
72
+ if requirements == Gem::Requirement.default && gh_release
75
73
  URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
76
74
  File.basename file.base_uri.to_s
77
75
  end
76
+ else
77
+ begin
78
+ headers = {}
79
+ headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
80
+ if gh_release
81
+ URI.parse("https://api.github.com/repos/#{repo}/releases?per_page=100").open(headers) do |file|
82
+ JSON.parse(file.read).map { |release| release['tag_name'] }
83
+ end
84
+ else
85
+ URI.parse("https://api.github.com/repos/#{repo}/tags?per_page=100").open(headers) do |file|
86
+ JSON.parse(file.read).map { |tag| tag['name'] }
87
+ end
88
+ end
89
+ rescue OpenURI::HTTPError
90
+ requirements.requirements
91
+ .map { |requirement| requirement.last.to_s.gsub('.pre.', '-') }
92
+ end
93
+ .find { |version| Gem::Version.correct?(version) && requirements.satisfied_by?(Gem::Version.new(version)) }
94
+ &.to_s
78
95
  end
79
96
  end
80
97
 
81
- def latest_sass_embedded
98
+ def default_sass_embedded
82
99
  repo = 'sass/dart-sass-embedded'
83
100
 
84
- # TODO, don't use prerelease once a release is available
85
- tag_name = latest_release repo, prerelease: true
101
+ tag_name = resolve_tag_name(repo, Sass::Dependencies::REQUIREMENTS[repo])
86
102
 
87
103
  os = case Platform::OS
88
104
  when 'darwin'
@@ -118,10 +134,12 @@ module Sass
118
134
  "https://github.com/#{repo}/releases/download/#{tag_name}/sass_embedded-#{tag_name}-#{os}-#{arch}.#{ext}"
119
135
  end
120
136
 
121
- def latest_protoc
137
+ def default_protoc
122
138
  repo = 'protocolbuffers/protobuf'
123
139
 
124
- tag_name = latest_release repo
140
+ spec = Gem::Dependency.new('google-protobuf', Sass::Dependencies::REQUIREMENTS[repo]).to_spec
141
+
142
+ tag_name = "v#{spec.version}"
125
143
 
126
144
  os = case Platform::OS
127
145
  when 'darwin'
@@ -165,12 +183,10 @@ module Sass
165
183
  "https://github.com/#{repo}/releases/download/#{tag_name}/protoc-#{tag_name[1..]}-#{os_arch}.#{ext}"
166
184
  end
167
185
 
168
- def latest_sass_embedded_protocol
186
+ def default_sass_embedded_protocol
169
187
  repo = 'sass/embedded-protocol'
170
188
 
171
- # TODO: use latest release once available
172
- # tag_name = latest_release repo
173
- tag_name = 'HEAD'
189
+ tag_name = resolve_tag_name(repo, Sass::Dependencies::REQUIREMENTS[repo], gh_release: false)
174
190
 
175
191
  "https://raw.githubusercontent.com/#{repo}/#{tag_name}/embedded_sass.proto"
176
192
  end
data/lib/sass/compile.rb CHANGED
@@ -161,9 +161,13 @@ module Sass
161
161
  end
162
162
 
163
163
  def function_call_response(function_call_request)
164
+ # TODO: convert argument_list to **kwargs
164
165
  EmbeddedProtocol::InboundMessage::FunctionCallResponse.new(
165
166
  id: function_call_request.id,
166
- success: @functions[function_call_request.name].call(*function_call_request.arguments)
167
+ success: @functions[function_call_request.name].call(*function_call_request.arguments),
168
+ accessed_argument_lists: function_call_request.arguments
169
+ .filter { |argument| argument.value == :argument_list }
170
+ .map { |argument| argument.argument_list.id }
167
171
  )
168
172
  rescue StandardError => e
169
173
  EmbeddedProtocol::InboundMessage::FunctionCallResponse.new(
data/lib/sass/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sass
4
- VERSION = '0.7.10'
4
+ VERSION = '0.7.14'
5
5
  end
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: 0.7.10
4
+ version: 0.7.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-11 00:00:00.000000000 Z
11
+ date: 2021-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.17.0
19
+ version: '3.17'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.17.0
26
+ version: '3.17'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -148,6 +148,7 @@ files:
148
148
  - LICENSE
149
149
  - README.md
150
150
  - ext/Makefile
151
+ - ext/dependencies.rb
151
152
  - ext/extconf.rb
152
153
  - lib/sass.rb
153
154
  - lib/sass/compile.rb
@@ -165,8 +166,8 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
165
166
  licenses:
166
167
  - MIT
167
168
  metadata:
168
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.10
169
- post_install_message:
169
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.14
170
+ post_install_message:
170
171
  rdoc_options: []
171
172
  require_paths:
172
173
  - lib
@@ -181,8 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
182
  - !ruby/object:Gem::Version
182
183
  version: '0'
183
184
  requirements: []
184
- rubygems_version: 3.2.15
185
- signing_key:
185
+ rubygems_version: 3.2.26
186
+ signing_key:
186
187
  specification_version: 4
187
188
  summary: Use dart-sass with Ruby!
188
189
  test_files: []