sass-embedded 0.7.26 → 0.8.1

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: 4a75289553b969294761ec97f67b855d1522e0ca404e803d1af47e852e7fb0d2
4
- data.tar.gz: d2a8bf2480f3e6350b7b810bf439e6f9f0fcaaae8a522c35bfd55966febe56a9
3
+ metadata.gz: 36aa31c9cb340c6a95c73c93ea480ab565a9f8f009094ec0f7f7a2239e647f2b
4
+ data.tar.gz: 71f325cdb5e5db87b97a931b92749c6e0ebbc91b376945fc5aa7b2fb5590928a
5
5
  SHA512:
6
- metadata.gz: a22732e3510e908263c1a3ab69d9b14b390d27dec9a5884a3e1a71bff1a225791165e6e72e7e59cb4256b0f34006e2e02dbc03165d1c70257f603286ad1eccc3
7
- data.tar.gz: e0fd839af7c2dfab077651eae2904cb3349b33c4dbc26a5bbfebf0e877ac8fb8bc2186e634bdea94fb986b3a8f3265be84e6dc6e9f483f73ffc7600067d221d8
6
+ metadata.gz: 7f136169a9f697db2cc04c466e2268230d090db81a01e54da74880a5dde4bba1acdafe425cf8b7f35f4030a2ec4d52b56e20dbba82911be974f9c000138f1e67
7
+ data.tar.gz: 79507aae38d81b506a0d38ddc312bd12533bbe1d6647e0634a3755ff154c4a0a7be917d9cfbe8f7604ce2196fda9a7eb45f0f77a89c0b23513aec5b43f88abb2
data/ext/sass/Makefile CHANGED
@@ -3,7 +3,7 @@ RM = powershell -c "cmd.exe /c del /f /q /s"
3
3
  else
4
4
  RM = rm -fr
5
5
  endif
6
- EXTCONF = ruby -- extconf.rb --without-sass-embedded --without-sass-embedded-protocol --without-protoc
6
+ EXTCONF = ruby -- extconf.rb
7
7
 
8
8
  .PHONY: all
9
9
  all: sass_embedded embedded_sass_pb.rb
@@ -44,7 +44,7 @@ else
44
44
  unzip -od $@ $<
45
45
  endif
46
46
 
47
- embedded_sass.proto:
47
+ embedded_sass.proto: sass_embedded
48
48
  $(EXTCONF) --with-sass-embedded-protocol
49
49
 
50
50
  %_pb.rb: %.proto protoc
data/ext/sass/extconf.rb CHANGED
@@ -5,8 +5,8 @@ require 'mkmf'
5
5
  require 'json'
6
6
  require 'open-uri'
7
7
  require 'fileutils'
8
- require_relative './dependencies'
9
8
  require_relative '../../lib/sass/platform'
9
+ require_relative '../../lib/sass/compiler'
10
10
 
11
11
  module Sass
12
12
  # The dependency downloader. This downloads all the dependencies during gem
@@ -22,32 +22,37 @@ module Sass
22
22
  # --with-protoc=file:///path/to/protoc-*.zip \
23
23
  # --with-sass-embedded=file:///path/to/sass_embedded-*.(tar.gz|zip) \
24
24
  # --with-sass-embedded-protocol=file:///path/to/embedded_sass.proto
25
+ # @example
26
+ # bundle config build.sass-embedded \
27
+ # --with-protoc=file:///path/to/protoc-*.zip \
28
+ # --with-sass-embedded=file:///path/to/sass_embedded-*.(tar.gz|zip) \
29
+ # --with-sass-embedded-protocol=file:///path/to/embedded_sass.proto
25
30
  class Extconf
26
31
  def initialize
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 }
32
+ fetch_with_config('protoc', false) { default_protoc }
33
+ fetch_with_config('sass-embedded', false) { default_sass_embedded }
34
+ fetch_with_config('sass-embedded-protocol', false) { default_sass_embedded_protocol }
30
35
  end
31
36
 
32
37
  private
33
38
 
34
- def get_with_config(config, default)
39
+ def fetch_with_config(config, default)
35
40
  val = with_config(config, default)
36
41
  case val
37
42
  when true
38
43
  if block_given?
39
- get yield
44
+ fetch yield
40
45
  else
41
- get default
46
+ fetch default
42
47
  end
43
48
  when false
44
49
  nil
45
50
  else
46
- get val
51
+ fetch val
47
52
  end
48
53
  end
49
54
 
50
- def get(uri_s)
55
+ def fetch(uri_s)
51
56
  uri = URI.parse(uri_s)
52
57
  path = File.absolute_path(File.basename(uri.path), __dir__)
53
58
  if uri.is_a?(URI::File) || uri.instance_of?(URI::Generic)
@@ -63,43 +68,60 @@ module Sass
63
68
  raise
64
69
  end
65
70
  rescue StandardError
66
- warn "Failed to get: #{uri_s}"
71
+ warn "ERROR: Error fetching #{uri_s}:"
67
72
  raise
68
73
  end
69
74
 
70
75
  def resolve_tag_name(repo, *requirements, gh_release: true)
71
76
  requirements = Gem::Requirement.create(*requirements)
72
77
 
73
- if requirements == Gem::Requirement.default && gh_release
74
- URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
75
- File.basename file.base_uri.to_s
76
- end
77
- else
78
- begin
79
- headers = {}
80
- headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
81
- if gh_release
82
- URI.parse("https://api.github.com/repos/#{repo}/releases?per_page=100").open(headers) do |file|
83
- JSON.parse(file.read).map { |release| release['tag_name'] }
84
- end
85
- else
86
- URI.parse("https://api.github.com/repos/#{repo}/tags?per_page=100").open(headers) do |file|
87
- JSON.parse(file.read).map { |tag| tag['name'] }
88
- end
78
+ satisfied = lambda { |version|
79
+ Gem::Version.correct?(version) && requirements.satisfied_by?(Gem::Version.new(version))
80
+ }
81
+
82
+ headers = {}
83
+ headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
84
+
85
+ begin
86
+ if gh_release
87
+ releases_uri = "https://github.com/#{repo}/releases"
88
+ uri = "#{releases_uri}/latest"
89
+ tag_name = URI.parse(uri).open do |file|
90
+ return nil if file.base_uri == releases_uri
91
+
92
+ latest = File.basename file.base_uri.to_s
93
+ latest if satisfied.call latest
89
94
  end
90
- rescue OpenURI::HTTPError
91
- requirements.requirements
92
- .map { |requirement| requirement.last.to_s.gsub('.pre.', '-') }
95
+
96
+ return tag_name unless tag_name.nil?
97
+
98
+ uri = "https://api.github.com/repos/#{repo}/releases?per_page=100"
99
+ tag_name = URI.parse(uri).open(headers) do |file|
100
+ JSON.parse(file.read).map { |release| release['tag_name'] }
101
+ end
102
+ .find(satisfied)&.peek
103
+ else
104
+ uri = "https://api.github.com/repos/#{repo}/tags?per_page=100"
105
+ tag_name = URI.parse(uri).open(headers) do |file|
106
+ JSON.parse(file.read).map { |tag| tag['name'] }
107
+ end
108
+ .find(satisfied)&.peek
93
109
  end
94
- .find { |version| Gem::Version.correct?(version) && requirements.satisfied_by?(Gem::Version.new(version)) }
95
- &.to_s
110
+
111
+ return tag_name unless tag_name.nil?
112
+ rescue OpenURI::HTTPError => e
113
+ warn "WARNING: Error fetching #{uri}: #{e}"
96
114
  end
115
+
116
+ requirements.requirements
117
+ .map { |requirement| requirement.last.to_s.gsub('.pre.', '-') }
118
+ .find(satisfied)&.peek
97
119
  end
98
120
 
99
121
  def default_sass_embedded
100
122
  repo = 'sass/dart-sass-embedded'
101
123
 
102
- tag_name = resolve_tag_name(repo, Sass::Dependencies::REQUIREMENTS[repo])
124
+ tag_name = resolve_tag_name(repo, Compiler::REQUIREMENTS)
103
125
 
104
126
  os = case Platform::OS
105
127
  when 'darwin'
@@ -138,7 +160,7 @@ module Sass
138
160
  def default_protoc
139
161
  repo = 'protocolbuffers/protobuf'
140
162
 
141
- spec = Gem::Dependency.new('google-protobuf', Sass::Dependencies::REQUIREMENTS[repo]).to_spec
163
+ spec = Gem::Dependency.new('google-protobuf').to_spec
142
164
 
143
165
  tag_name = "v#{spec.version}"
144
166
 
@@ -187,7 +209,9 @@ module Sass
187
209
  def default_sass_embedded_protocol
188
210
  repo = 'sass/embedded-protocol'
189
211
 
190
- tag_name = resolve_tag_name(repo, Sass::Dependencies::REQUIREMENTS[repo], gh_release: false)
212
+ tag_name = IO.popen([Compiler::DART_SASS_EMBEDDED, '--version']) do |file|
213
+ JSON.parse(file.read)['protocolVersion']
214
+ end
191
215
 
192
216
  "https://raw.githubusercontent.com/#{repo}/#{tag_name}/embedded_sass.proto"
193
217
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sass
4
+ module Compiler
5
+ DART_SASS_EMBEDDED = File.absolute_path(
6
+ "../../ext/sass/sass_embedded/dart-sass-embedded#{Platform::OS == 'windows' ? '.bat' : ''}", __dir__
7
+ )
8
+
9
+ PROTOCOL_ERROR_ID = 4_294_967_295
10
+
11
+ REQUIREMENTS = '~> 1.0.0-beta.11'
12
+ end
13
+ end
data/lib/sass/embedded.rb CHANGED
@@ -243,7 +243,7 @@ module Sass
243
243
  def next_id
244
244
  @id_semaphore.synchronize do
245
245
  @id += 1
246
- @id = 0 if @id == Transport::PROTOCOL_ERROR_ID
246
+ @id = 0 if @id == Compiler::PROTOCOL_ERROR_ID
247
247
  @id
248
248
  end
249
249
  end
@@ -11,12 +11,6 @@ module Sass
11
11
  class Transport
12
12
  include Observable
13
13
 
14
- DART_SASS_EMBEDDED = File.absolute_path(
15
- "../../ext/sass/sass_embedded/dart-sass-embedded#{Platform::OS == 'windows' ? '.bat' : ''}", __dir__
16
- )
17
-
18
- PROTOCOL_ERROR_ID = 4_294_967_295
19
-
20
14
  ONEOF_MESSAGE = EmbeddedProtocol::InboundMessage
21
15
  .descriptor
22
16
  .lookup_oneof('message')
@@ -29,7 +23,7 @@ module Sass
29
23
  def initialize
30
24
  @observerable_mutex = Mutex.new
31
25
  @stdin_mutex = Mutex.new
32
- @stdin, @stdout, @stderr, @wait_thread = Open3.popen3(DART_SASS_EMBEDDED)
26
+ @stdin, @stdout, @stderr, @wait_thread = Open3.popen3(Compiler::DART_SASS_EMBEDDED)
33
27
 
34
28
  [@stdin, @stdout].each(&:binmode)
35
29
 
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.26'
4
+ VERSION = '0.8.1'
5
5
  end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative 'sass'
data/lib/sass.rb CHANGED
@@ -62,6 +62,7 @@ end
62
62
 
63
63
  require_relative 'sass/version'
64
64
  require_relative 'sass/platform'
65
+ require_relative 'sass/compiler'
65
66
  require_relative 'sass/util'
66
67
  require_relative 'sass/struct'
67
68
  require_relative 'sass/result'
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.26
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-21 00:00:00.000000000 Z
11
+ date: 2021-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -25,103 +25,103 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.18.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 5.14.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 5.14.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest
42
+ name: minitest-around
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.14.4
47
+ version: 0.5.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.14.4
54
+ version: 0.5.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: minitest-around
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 13.0.6
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: '0'
68
+ version: 13.0.6
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 1.21.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 1.21.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: rubocop-minitest
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 0.15.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 0.15.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: rubocop-minitest
98
+ name: rubocop-performance
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 1.11.5
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 1.11.5
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rubocop-rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 0.6.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0'
124
+ version: 0.6.0
125
125
  description: A Ruby library that will communicate with Embedded Dart Sass using the
126
126
  Embedded Sass protocol.
127
127
  email:
@@ -134,11 +134,12 @@ files:
134
134
  - LICENSE
135
135
  - README.md
136
136
  - ext/sass/Makefile
137
- - ext/sass/dependencies.rb
138
137
  - ext/sass/extconf.rb
139
138
  - ext/sass/unzip.vbs
139
+ - lib/sass-embedded.rb
140
140
  - lib/sass.rb
141
141
  - lib/sass/compile.rb
142
+ - lib/sass/compiler.rb
142
143
  - lib/sass/embedded.rb
143
144
  - lib/sass/error.rb
144
145
  - lib/sass/info.rb
@@ -153,7 +154,9 @@ homepage: https://github.com/ntkme/sass-embedded-host-ruby
153
154
  licenses:
154
155
  - MIT
155
156
  metadata:
156
- source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.7.26
157
+ documentation_uri: https://www.rubydoc.info/gems/sass-embedded/0.8.1
158
+ source_code_uri: https://github.com/ntkme/sass-embedded-host-ruby/tree/v0.8.1
159
+ funding_uri: https://github.com/sponsors/ntkme
157
160
  post_install_message:
158
161
  rdoc_options: []
159
162
  require_paths:
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sass
4
- module Dependencies
5
- REQUIREMENTS = {
6
- 'protocolbuffers/protobuf' => '~> 3.18.0',
7
- 'sass/embedded-protocol' => '~> 1.0.0-beta.12',
8
- 'sass/dart-sass-embedded' => '~> 1.0.0-beta.11'
9
- }.freeze
10
- end
11
- end