sass-embedded 0.2.3 → 0.2.4

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: 5dc860ffde1f3fb6315c2a43972b245841e10e0b0b4a8979a5a4c7528063cd95
4
- data.tar.gz: aa76a73fdc4a252b1cd948b90452fa772282408289e99a4e0206c968a5e68898
3
+ metadata.gz: e345b143aa337d47b0f28d6d58d2a5636f84fb69b4f5ed739b6613ab39327a2d
4
+ data.tar.gz: 72c0bae0108414a5a989ea6b2f5eac86406eb83faa9c3fa1f1f642e609930afd
5
5
  SHA512:
6
- metadata.gz: b03c95f66214d6e095fd1e11bbeebe24d56443cf90107661007aef30006502296799c07e4c73974cfa0ca7debc7a807a120c86eb99441363af10f699a9cd0148
7
- data.tar.gz: b834e3e9e2a0eb7acdea42e04c1627edc86f2e146c0b96e79331c646b387f8df861fa59d0efeb46d9f3d176b388804d67b63515cc406efb8bb5d7a3c1d4391f6
6
+ metadata.gz: 478a33de83120ace9665efd401d9988a956a291ed19b905f77d129486fd3e796bb90a66d6e3ee4f8f1fde47eddbb285918e84f5d8795d2a9f3546c82c431ef88
7
+ data.tar.gz: d9512132067039d511bafc684132ae010238b0b7b9ad1c37e3d7c6a4cb6463caa620eed87b05af3fc671c9200246f81af591b82d8c0d01b38429cafb87667394
data/Rakefile CHANGED
@@ -6,9 +6,9 @@ task default: :test
6
6
 
7
7
  desc 'Download dart-sass-embedded'
8
8
  task :extconf do
9
- system('make', '-C', 'ext/sass_embedded', 'distclean')
10
- require_relative 'ext/sass_embedded/extconf'
11
- system('make', '-C', 'ext/sass_embedded', 'install')
9
+ system('make', '-C', 'ext', 'distclean')
10
+ require_relative 'ext/extconf'
11
+ system('make', '-C', 'ext')
12
12
  end
13
13
 
14
14
  desc 'Run all tests'
File without changes
data/ext/Makefile ADDED
@@ -0,0 +1,51 @@
1
+ ifeq ($(OS),Windows_NT)
2
+ RM = cmd /c del /f /q /s
3
+ else
4
+ RM = rm -fr
5
+ endif
6
+ EXTCONF = ruby -- extconf.rb --without-sass-embedded --without-sass-embedded-protocol --without-protoc
7
+
8
+ .PHONY: all
9
+ all: sass_embedded embedded_sass_pb.rb
10
+
11
+ .PHONY: install
12
+ install:
13
+
14
+ .PHONY: clean
15
+ clean:
16
+ $(RM) embedded_sass_pb.rb protoc sass_embedded
17
+
18
+ .PHONY: distclean
19
+ distclean: clean
20
+ $(RM) embedded_sass.proto protoc-*.zip sass_embedded-*.tar.gz
21
+
22
+ ifeq ($(OS),Windows_NT)
23
+ sass_embedded-*.zip:
24
+ else
25
+ sass_embedded-*.tar.gz:
26
+ endif
27
+ $(EXTCONF) --with-sass-embedded
28
+
29
+ ifeq ($(OS),Windows_NT)
30
+ sass_embedded: sass_embedded-*.zip
31
+ powershell -c "Get-Item $< | Expand-Archive -DestinationPath . -Force"
32
+ else
33
+ sass_embedded: sass_embedded-*.tar.gz
34
+ tar -vxzf $<
35
+ endif
36
+
37
+ protoc-*.zip:
38
+ $(EXTCONF) --with-protoc
39
+
40
+ protoc: protoc-*.zip
41
+ ifeq ($(OS),Windows_NT)
42
+ powershell -c "Get-Item $< | Expand-Archive -DestinationPath $@ -Force"
43
+ else
44
+ unzip -od $@ $<
45
+ endif
46
+
47
+ embedded_sass.proto:
48
+ $(EXTCONF) --with-sass-embedded-protocol
49
+
50
+ %_pb.rb: %.proto protoc
51
+ ./protoc/bin/protoc --ruby_out=. $<
data/ext/extconf.rb ADDED
@@ -0,0 +1,159 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'mkmf'
5
+ require 'json'
6
+ require 'open-uri'
7
+ require 'fileutils'
8
+ require_relative '../lib/sass/platform'
9
+
10
+ module Sass
11
+ class Extconf
12
+ def initialize
13
+ get_with_config('sass-embedded', true) { latest_sass_embedded }
14
+ get_with_config('sass-embedded-protocol', true) { latest_sass_embedded_protocol }
15
+ get_with_config('protoc', true) { latest_protoc }
16
+ end
17
+
18
+ private
19
+
20
+ def get_with_config(config, default)
21
+ val = with_config(config, default)
22
+ case val
23
+ when true
24
+ if block_given?
25
+ get yield
26
+ else
27
+ get default
28
+ end
29
+ when false
30
+ nil
31
+ else
32
+ get val
33
+ end
34
+ end
35
+
36
+ def get(uri_s)
37
+ uri = URI.parse(uri_s)
38
+ path = File.absolute_path(File.basename(uri.path), __dir__)
39
+ if uri.is_a?(URI::File) || uri.instance_of?(URI::Generic)
40
+ FileUtils.copy_file uri.path, path
41
+ elsif uri.respond_to? :open
42
+ uri.open do |source|
43
+ File.open(path, 'wb') do |destination|
44
+ destination.write source.read
45
+ end
46
+ end
47
+ else
48
+ raise
49
+ end
50
+ rescue StandardError
51
+ raise "Failed to get: #{uri}"
52
+ end
53
+
54
+ def latest_release(repo, prerelease: false)
55
+ if prerelease
56
+ headers = {}
57
+ headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
58
+ URI.parse("https://api.github.com/repos/#{repo}/releases").open(headers) do |file|
59
+ JSON.parse(file.read)[0]['tag_name']
60
+ end
61
+ else
62
+ URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
63
+ File.basename file.base_uri.to_s
64
+ end
65
+ end
66
+ end
67
+
68
+ def latest_sass_embedded
69
+ repo = 'sass/dart-sass-embedded'
70
+
71
+ # TODO, don't use prerelease once a release is available
72
+ tag_name = latest_release repo, prerelease: true
73
+
74
+ os = case Sass::Platform::OS
75
+ when 'darwin'
76
+ 'macos'
77
+ when 'linux'
78
+ 'linux'
79
+ when 'windows'
80
+ 'windows'
81
+ else
82
+ raise "Unsupported OS: #{Sass::Platform::OS}"
83
+ end
84
+
85
+ arch = case Sass::Platform::ARCH
86
+ when 'x86_64'
87
+ 'x64'
88
+ when 'i386'
89
+ 'ia32'
90
+ else
91
+ raise "Unsupported Arch: #{Sass::Platform::ARCH}"
92
+ end
93
+
94
+ ext = case os
95
+ when 'windows'
96
+ 'zip'
97
+ else
98
+ 'tar.gz'
99
+ end
100
+
101
+ "https://github.com/#{repo}/releases/download/#{tag_name}/sass_embedded-#{tag_name}-#{os}-#{arch}.#{ext}"
102
+ end
103
+
104
+ def latest_protoc
105
+ repo = 'protocolbuffers/protobuf'
106
+
107
+ tag_name = latest_release repo
108
+
109
+ os = case Sass::Platform::OS
110
+ when 'darwin'
111
+ 'osx'
112
+ when 'linux'
113
+ 'linux'
114
+ when 'windows'
115
+ 'win'
116
+ else
117
+ raise "Unsupported OS: #{Sass::Platform::OS}"
118
+ end
119
+
120
+ arch = case Sass::Platform::ARCH
121
+ when 'aarch64'
122
+ 'aarch_64'
123
+ when 'sparcv9'
124
+ 's390'
125
+ when 'i386'
126
+ 'x86_32'
127
+ when 'x86_64'
128
+ 'x86_64'
129
+ when 'powerpc64'
130
+ 'ppcle_64'
131
+ else
132
+ raise "Unsupported Arch: #{Sass::Platform::ARCH}"
133
+ end
134
+
135
+ os_arch = case os
136
+ when 'win'
137
+ os + arch.split('_').last
138
+ else
139
+ "#{os}-#{arch}"
140
+ end
141
+
142
+ ext = 'zip'
143
+
144
+ "https://github.com/#{repo}/releases/download/#{tag_name}/protoc-#{tag_name[1..-1]}-#{os_arch}.#{ext}"
145
+ end
146
+
147
+ def latest_sass_embedded_protocol
148
+ repo = 'sass/embedded-protocol'
149
+
150
+ # TODO: use latest release once available
151
+ # tag_name = latest_release repo
152
+ tag_name = 'HEAD'
153
+
154
+ "https://raw.githubusercontent.com/#{repo}/#{tag_name}/embedded_sass.proto"
155
+ end
156
+ end
157
+ end
158
+
159
+ Sass::Extconf.new
@@ -2,14 +2,14 @@
2
2
 
3
3
  require 'open3'
4
4
  require 'observer'
5
- require_relative '../../ext/sass_embedded/embedded_sass_pb'
5
+ require_relative '../../ext/embedded_sass_pb'
6
6
 
7
7
  module Sass
8
8
  class Transport
9
9
  include Observable
10
10
 
11
11
  DART_SASS_EMBEDDED = File.absolute_path(
12
- "../../ext/sass_embedded/sass_embedded/dart-sass-embedded#{Sass::Platform::OS == 'windows' ? '.bat' : ''}", __dir__
12
+ "../../ext/sass_embedded/dart-sass-embedded#{Sass::Platform::OS == 'windows' ? '.bat' : ''}", __dir__
13
13
  )
14
14
 
15
15
  PROTOCOL_ERROR_ID = 4_294_967_295
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.2.3'
4
+ VERSION = '0.2.4'
5
5
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
- spec.extensions = ['ext/sass_embedded/extconf.rb']
18
+ spec.extensions = ['ext/extconf.rb']
19
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass-embedded
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - なつき
@@ -113,7 +113,7 @@ email:
113
113
  - i@ntk.me
114
114
  executables: []
115
115
  extensions:
116
- - ext/sass_embedded/extconf.rb
116
+ - ext/extconf.rb
117
117
  extra_rdoc_files: []
118
118
  files:
119
119
  - ".github/workflows/build.yml"
@@ -122,9 +122,9 @@ files:
122
122
  - LICENSE
123
123
  - README.md
124
124
  - Rakefile
125
- - ext/sass_embedded/.gitignore
126
- - ext/sass_embedded/Makefile
127
- - ext/sass_embedded/extconf.rb
125
+ - ext/.gitignore
126
+ - ext/Makefile
127
+ - ext/extconf.rb
128
128
  - lib/sass.rb
129
129
  - lib/sass/embedded.rb
130
130
  - lib/sass/error.rb
@@ -1,28 +0,0 @@
1
- ifeq ($(OS),Windows_NT)
2
- RM = cmd /c del /f /q /s
3
- else
4
- RM = rm -fr
5
- endif
6
-
7
- .PHONY: all
8
- all:
9
-
10
- .PHONY: install
11
- install:
12
- ifeq ($(OS),Windows_NT)
13
- powershell -Command "Get-Item sass_embedded-*.zip | Expand-Archive -DestinationPath . -Force"
14
- powershell -Command "Get-Item protoc-*.zip | Expand-Archive -DestinationPath protoc -Force"
15
- ./protoc/bin/protoc --ruby_out=. embedded_sass.proto
16
- else
17
- tar -vxzf sass_embedded-*.tar.gz
18
- unzip -od protoc protoc-*.zip
19
- ./protoc/bin/protoc --ruby_out=. embedded_sass.proto
20
- endif
21
-
22
- .PHONY: clean
23
- clean:
24
- $(RM) embedded_sass_pb.rb protoc sass_embedded
25
-
26
- .PHONY: distclean
27
- distclean: clean
28
- $(RM) embedded_sass.proto protoc-*.zip sass_embedded-*.tar.gz
@@ -1,129 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'json'
5
- require 'open-uri'
6
- require_relative '../../lib/sass/platform'
7
-
8
- module Sass
9
- class Extconf
10
-
11
- def initialize
12
- download_sass_embedded
13
- download_protoc
14
- download_embedded_sass_proto
15
- end
16
-
17
- private
18
-
19
- def api(url)
20
- headers = {}
21
- headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" if ENV['GITHUB_TOKEN']
22
- URI.parse(url).open(headers) do |file|
23
- JSON.parse file.read
24
- end
25
- end
26
-
27
- def download(url)
28
- URI.parse(url).open do |source|
29
- File.open(File.absolute_path(File.basename(url), __dir__), 'wb') do |destination|
30
- destination.write source.read
31
- end
32
- end
33
- rescue StandardError
34
- raise "Failed to download: #{url}"
35
- end
36
-
37
- def download_sass_embedded
38
- repo = 'sass/dart-sass-embedded'
39
-
40
- release = api("https://api.github.com/repos/#{repo}/releases")[0]['tag_name']
41
-
42
- os = case Sass::Platform::OS
43
- when 'darwin'
44
- 'macos'
45
- when 'linux'
46
- 'linux'
47
- when 'windows'
48
- 'windows'
49
- else
50
- raise "Unsupported OS: #{Sass::Platform::OS}"
51
- end
52
-
53
- arch = case Sass::Platform::ARCH
54
- when 'x86_64'
55
- 'x64'
56
- when 'i386'
57
- 'ia32'
58
- else
59
- raise "Unsupported Arch: #{Sass::Platform::ARCH}"
60
- end
61
-
62
- ext = case os
63
- when 'windows'
64
- 'zip'
65
- else
66
- 'tar.gz'
67
- end
68
-
69
- url = "https://github.com/#{repo}/releases/download/#{release}/sass_embedded-#{release}-#{os}-#{arch}.#{ext}"
70
- download url
71
- end
72
-
73
- def download_protoc
74
- repo = 'protocolbuffers/protobuf'
75
-
76
- tag = URI.parse("https://github.com/#{repo}/releases/latest").open do |file|
77
- File.basename file.base_uri.to_s
78
- end
79
-
80
- release = tag[1..-1]
81
-
82
- os = case Sass::Platform::OS
83
- when 'darwin'
84
- 'osx'
85
- when 'linux'
86
- 'linux'
87
- when 'windows'
88
- 'win'
89
- else
90
- raise "Unsupported OS: #{Sass::Platform::OS}"
91
- end
92
-
93
- arch = case Sass::Platform::ARCH
94
- when 'aarch64'
95
- 'aarch_64'
96
- when 'sparcv9'
97
- 's390'
98
- when 'i386'
99
- 'x86_32'
100
- when 'x86_64'
101
- 'x86_64'
102
- when 'powerpc64'
103
- 'ppcle_64'
104
- else
105
- raise "Unsupported Arch: #{Sass::Platform::ARCH}"
106
- end
107
-
108
- os_arch = case os
109
- when 'win'
110
- os + arch.split('_').last
111
- else
112
- "#{os}-#{arch}"
113
- end
114
-
115
- ext = 'zip'
116
-
117
- url = "https://github.com/#{repo}/releases/download/#{tag}/protoc-#{release}-#{os_arch}.#{ext}"
118
- download url
119
- end
120
-
121
- def download_embedded_sass_proto
122
- url = 'https://raw.githubusercontent.com/sass/embedded-protocol/HEAD/embedded_sass.proto'
123
- download url
124
- end
125
-
126
- end
127
- end
128
-
129
- Sass::Extconf.new