tebako-runtime 0.5.2 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +9 -0
- data/lib/tebako-runtime/adapters/jing.rb +1 -1
- data/lib/tebako-runtime/adapters/mn2pdf.rb +20 -3
- data/lib/tebako-runtime/adapters/mnconvert.rb +1 -1
- data/lib/tebako-runtime/memfs.rb +32 -19
- data/lib/tebako-runtime/version.rb +1 -1
- data/tebako-runtime.gemspec +2 -0
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc9473e24e5664578ca501587c6a55dfcdc8852c3872f2e26d310201f738fa2c
|
4
|
+
data.tar.gz: 95e8bfc075a6e97461e495675a268b8fdc877f0ef7643c2a4fda00b97a41517c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1c0fdd8a3c0c08cbad7d4acf833ecaf7bb7e05672eb153efe3750c495c7edfbd57959119ba5fffe66a25521dd7332e796d37494f2115bc2ecd4a3b10c23b826
|
7
|
+
data.tar.gz: 610f4432bcf2a0c1f292cf9e833598217a4c9e1ce51d72b7de8092e6558eec0e4e57cf5fc5e68855d444ce9eb647ed37beffa712904d1b68e5bf04b88e2683d2
|
data/README.adoc
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
== A helper Gem for tebako image packager
|
4
4
|
|
5
5
|
image:https://github.com/maxirmx/tebako-runtime/actions/workflows/test-and-release.yml/badge.svg["Test and release", link="https://github.com/maxirmx/tebako-runtime/actions/workflows/test-and-release.yml"]
|
6
|
+
image:https://codecov.io/gh/tamatebako/tebako-runtime/graph/badge.svg?token=CXNsUymRsM["Test coverage", link="https://codecov.io/gh/tamatebako/tebako-runtime"]
|
6
7
|
|
7
8
|
Tebako is an executable packager. It packages a set of files into a DwarFS file system for read-only purposes.
|
8
9
|
|
@@ -22,9 +23,17 @@ tebako-runtime (this Gem) provides support for known Gems that use system calls
|
|
22
23
|
|
23
24
|
== Supported Gems
|
24
25
|
|
26
|
+
* https://rubygems.org/gems/excavate/[excavate]
|
25
27
|
* https://rubygems.org/gems/ffi[ffi]
|
28
|
+
* https://rubygems.org/gems/jing[jing]
|
26
29
|
* https://rubygems.org/gems/mn2pdf[mn2pdf]
|
27
30
|
* https://rubygems.org/gems/mnconvert[mnconvert]
|
28
31
|
* https://rubygems.org/gems/ruby-jing[ruby-jing]
|
29
32
|
* https://rubygems.org/gems/sassc[sassc]
|
30
33
|
* https://rubygems.org/gems/seven-zip[seven-zip]
|
34
|
+
|
35
|
+
== Additional features
|
36
|
+
In addition to gem support tebako-runtime provides a set of utilities to help with tebako image creation:
|
37
|
+
|
38
|
+
* Embedded root SSL certificates's bundle
|
39
|
+
* https://rubygems.org/gems/ffi-compiler[ffi-compiler], https://rubygems.org/gems/ffi-compiler2[ffi-compiler2] support
|
@@ -26,10 +26,27 @@
|
|
26
26
|
# POSSIBILITY OF SUCH DAMAGE.
|
27
27
|
|
28
28
|
# Unpack mn2pdf.jar
|
29
|
-
module Mn2pdf
|
30
|
-
remove_const("MN2PDF_JAR_PATH")
|
31
|
-
MN2PDF_JAR_PATH = TebakoRuntime.extract_memfs(File.join(TebakoRuntime.full_gem_path("mn2pdf"), "bin", "mn2pdf.jar"))
|
32
29
|
|
30
|
+
module TebakoRuntime
|
31
|
+
MN2PDF_J_PATH = TebakoRuntime.extract_memfs(File.join(TebakoRuntime.full_gem_path("mn2pdf"), "bin",
|
32
|
+
"mn2pdf.jar"))
|
33
|
+
end
|
34
|
+
|
35
|
+
if Mn2pdf.const_defined?("MN2PDF_JAR_PATH")
|
36
|
+
module Mn2pdf
|
37
|
+
remove_const("MN2PDF_JAR_PATH")
|
38
|
+
MN2PDF_JAR_PATH = TebakoRuntime::MN2PDF_J_PATH
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if Jvm.const_defined?("MN2PDF_JAR_PATH")
|
43
|
+
module Jvm
|
44
|
+
remove_const("MN2PDF_JAR_PATH")
|
45
|
+
MN2PDF_JAR_PATH = TebakoRuntime::MN2PDF_J_PATH
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
module Mn2pdf
|
33
50
|
singleton_class.send(:alias_method, :convert_orig, :convert)
|
34
51
|
singleton_class.send(:remove_method, :convert)
|
35
52
|
|
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
# Unpack mn2pdf.jar
|
29
29
|
module MnConvert
|
30
|
-
remove_const("MNCONVERT_JAR_PATH")
|
30
|
+
remove_const("MNCONVERT_JAR_PATH") if const_defined?("MNCONVERT_JAR_PATH")
|
31
31
|
MNCONVERT_JAR_PATH = TebakoRuntime.extract_memfs(File.join(TebakoRuntime.full_gem_path("mnconvert"), "bin",
|
32
32
|
"mnconvert.jar"))
|
33
33
|
|
data/lib/tebako-runtime/memfs.rb
CHANGED
@@ -35,33 +35,46 @@ require_relative "string"
|
|
35
35
|
# Module TebakoRuntime
|
36
36
|
# Methods to extract files from memfs to temporary folder
|
37
37
|
module TebakoRuntime
|
38
|
-
|
39
|
-
|
38
|
+
def self.initialize_compiler_memfs_lib_cache
|
39
|
+
Pathname.new(Dir.mktmpdir("tebako-runtime-"))
|
40
|
+
rescue StandardError
|
41
|
+
return nil unless defined?($tebako_original_pwd) && !$tebako_original_pwd.nil? # rubocop:disable Style/GlobalVars
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
else
|
46
|
-
[file]
|
47
|
-
end
|
48
|
-
FileUtils.cp_r files, extract_path
|
43
|
+
begin
|
44
|
+
Pathname.new(Dir.mktmpdir("tebako-runtime-", $tebako_original_pwd)) # rubocop:disable Style/GlobalVars
|
45
|
+
rescue StandardError
|
46
|
+
nil
|
49
47
|
end
|
48
|
+
end
|
49
|
+
|
50
|
+
COMPILER_MEMFS = RUBY_PLATFORM =~ /mswin|mingw/ ? "A:/__tebako_memfs__" : "/__tebako_memfs__"
|
51
|
+
COMPILER_MEMFS_LIB_CACHE = initialize_compiler_memfs_lib_cache
|
52
|
+
exit if COMPILER_MEMFS_LIB_CACHE.nil?
|
50
53
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
def self.extract(file, wild, extract_path)
|
55
|
+
files = if wild
|
56
|
+
Dir.glob("#{File.dirname(file)}/*#{File.extname(file)}")
|
57
|
+
else
|
58
|
+
[file]
|
59
|
+
end
|
60
|
+
FileUtils.cp_r files, extract_path
|
61
|
+
end
|
56
62
|
|
57
|
-
|
58
|
-
|
63
|
+
# wild == true means "also extract other files with the same extension"
|
64
|
+
def self.extract_memfs(file, wild: false, cache_path: COMPILER_MEMFS_LIB_CACHE)
|
65
|
+
is_quoted = file.quoted?
|
66
|
+
file = file.unquote if is_quoted
|
67
|
+
return is_quoted ? file.quote : file unless File.exist?(file) && file.start_with?(COMPILER_MEMFS)
|
59
68
|
|
60
|
-
|
61
|
-
|
69
|
+
memfs_extracted_file = cache_path + File.basename(file)
|
70
|
+
extract(file, wild, cache_path) unless memfs_extracted_file.exist?
|
71
|
+
|
72
|
+
is_quoted ? memfs_extracted_file.to_path.quote : memfs_extracted_file.to_path
|
62
73
|
end
|
63
74
|
end
|
64
75
|
|
65
76
|
at_exit do
|
77
|
+
return if TebakoRuntime::COMPILER_MEMFS_LIB_CACHE.nil?
|
78
|
+
|
66
79
|
FileUtils.remove_dir(TebakoRuntime::COMPILER_MEMFS_LIB_CACHE.to_path, true)
|
67
80
|
end
|
data/tebako-runtime.gemspec
CHANGED
@@ -65,5 +65,7 @@ Gem::Specification.new do |spec|
|
|
65
65
|
spec.add_development_dependency "mnconvert", "~> 1.54"
|
66
66
|
spec.add_development_dependency "ruby-jing", "~> 0.0.3"
|
67
67
|
spec.add_development_dependency "sassc", "~> 2.4"
|
68
|
+
spec.add_development_dependency "simplecov"
|
69
|
+
spec.add_development_dependency "simplecov-cobertura"
|
68
70
|
spec.add_development_dependency "sinatra", "~> 4.0"
|
69
71
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tebako-runtime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -136,6 +136,34 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '2.4'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: simplecov-cobertura
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: sinatra
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|