sass-embedded 0.7.26 → 0.8.1

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