kompo 0.1.3 → 0.2.0
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 +4 -4
- data/README.md +21 -17
- data/exe/kompo +1 -11
- data/lib/kompo/version.rb +1 -1
- data/lib/kompo.rb +119 -48
- data/lib/main.c.erb +12 -6
- metadata +17 -7
- data/sample/Gemfile +0 -8
- data/sample/Gemfile.lock +0 -48
- data/sample/hello.rb +0 -3
- data/sample/main.rb +0 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 824cb5818444206e527f8a70d899c53b922f05a2ee44b1433b9103e2bc00dec9
|
4
|
+
data.tar.gz: bc82fea90c7f254f3f1e2221cadd4dedb9ec0e0c64ae4a68163e5784a0de35d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 164750a94ce03e80d4dbdbd6c88a33ea76e92e5ddcd0a7ee2170aa76e2c24c3471616739a21adcd37724a49a0af93bb3805b73e14446159dc218cb514fb0fc9a
|
7
|
+
data.tar.gz: 7668b48ea202b6f21dccceb8a67097d1df27b6661295c36b756f9a537c09f5479ed326f86c0374b7bb5fef860d62f54a599c520212798a31b02c03ddb6bc295a
|
data/README.md
CHANGED
@@ -1,17 +1,10 @@
|
|
1
1
|
# Kompo
|
2
|
-
|
3
|
-
TODO: Delete this and the text below, and describe your gem
|
4
|
-
|
5
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/kompo`. To experiment with that code, run `bin/console` for an interactive prompt.
|
2
|
+
A tool to pack Ruby and Ruby scripts in one binary. This tool is still under development.
|
6
3
|
|
7
4
|
## Installation
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
If bundler is not being used to manage dependencies, install the gem by executing:
|
13
|
-
|
14
|
-
$ gem install kompo
|
5
|
+
```sh
|
6
|
+
$ gem install kompo
|
7
|
+
```
|
15
8
|
|
16
9
|
## Usage
|
17
10
|
|
@@ -24,19 +17,30 @@ $ brew tap ahogappa0613/kompo-vfs https://github.com/ahogappa0613/kompo-vfs.git
|
|
24
17
|
$ brew install ahogappa0613/kompo-vfs/kompo-vfs
|
25
18
|
```
|
26
19
|
|
27
|
-
###
|
28
|
-
|
20
|
+
### Building
|
21
|
+
To build komp-vfs, you need to have cargo installation.
|
29
22
|
```sh
|
30
|
-
$ kompo
|
23
|
+
$ git clone https://github.com/ahogappa0613/kompo-vfs.git
|
24
|
+
$ cd kompo-vfs
|
25
|
+
$ cargo build --release
|
26
|
+
```
|
27
|
+
Set environment variables
|
28
|
+
```sh
|
29
|
+
$ KOMPO_CLI=/path/to/kompo-vfs/target/release/kompo-cli
|
30
|
+
$ LIB_KOMPO_DIR=/path/to/kompo-vfs/target/release
|
31
31
|
```
|
32
|
-
This will read the Gemfile in the directory and create an executable file with `main.rb` as the entry point in the same directory as `./sample` in the same directory.
|
33
32
|
|
33
|
+
## examples
|
34
34
|
|
35
|
+
* hello
|
36
|
+
* simple hello world script.
|
37
|
+
* sinatra_and_sqlite
|
38
|
+
* sinatra app with sqlite3 with Gemfile.
|
39
|
+
* rails
|
40
|
+
* 🚧
|
35
41
|
|
36
42
|
## Development
|
37
43
|
|
38
|
-
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
39
|
-
|
40
44
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
41
45
|
|
42
46
|
## Contributing
|
data/exe/kompo
CHANGED
@@ -3,17 +3,7 @@
|
|
3
3
|
require_relative '../lib/kompo'
|
4
4
|
require 'optparse'
|
5
5
|
|
6
|
-
option = Kompo::Option.
|
7
|
-
|
8
|
-
option.on('-e VAL', '--entrypoint=VAL') { |v| option.entrypoint = v }
|
9
|
-
option.on('-o VAL', '--output=VAL') { |v| option.output = v }
|
10
|
-
option.on('--[no-]gemfile') { |v| option.gemfile = v }
|
11
|
-
option.on('--[no-]stdlib') { |v| option.stdlib = v }
|
12
|
-
option.on('--dest-dir=VAL') { |v| option.dest_dir = v }
|
13
|
-
option.on('--ruby-src-path=VAL') { |v| option.ruby_src_path = v }
|
14
|
-
option.on('--cache-bundle-path=VAL') { |v| option.cache_bundle_path = v }
|
15
|
-
option.on('--ruby-version=VAL') { |v| option.ruby_version = v }
|
16
|
-
# option.on('--compress') { |v| option.compress = v }
|
6
|
+
option = Kompo::Option.default
|
17
7
|
|
18
8
|
Kompo::Tasks.cd_work_dir(option) do |task|
|
19
9
|
task.clone_ruby_src
|
data/lib/kompo/version.rb
CHANGED
data/lib/kompo.rb
CHANGED
@@ -12,24 +12,43 @@ module Kompo
|
|
12
12
|
|
13
13
|
class Option
|
14
14
|
extend Forwardable
|
15
|
-
attr_accessor :entrypoint, :output, :gemfile, :
|
15
|
+
attr_accessor :entrypoint, :output, :gemfile, :ignore_stdlib, :dyn_link_lib, :dest_dir, :ruby_src_path, :cache_bundle_path, :ruby_version, :compress, :context, :args, :use_group
|
16
16
|
delegate %i[on] => :@opt
|
17
17
|
|
18
18
|
def initialize(dir = Dir.getwd, opt = OptionParser.new)
|
19
19
|
@entrypoint = File.join(dir, 'main.rb')
|
20
20
|
@output = File.basename(dir)
|
21
|
-
@gemfile =
|
22
|
-
@
|
21
|
+
@gemfile = File.exist?(File.join(Dir.getwd, 'Gemfile'))
|
22
|
+
@ignore_stdlib = []
|
23
|
+
@dyn_link_lib = []
|
23
24
|
@dest_dir = dir
|
24
25
|
@ruby_src_path = nil
|
25
26
|
@cache_bundle_path = nil
|
26
27
|
@ruby_version = "v#{RUBY_VERSION.gsub('.', '_')}"
|
27
28
|
@compress = false
|
29
|
+
@use_group = 'default'
|
28
30
|
|
29
31
|
@context = dir
|
30
32
|
@opt = opt
|
31
33
|
end
|
32
34
|
|
35
|
+
def self.default
|
36
|
+
option = new
|
37
|
+
option.on('-e VAL', '--entrypoint=VAL', "File path to use for entry point. (default: \'./main.rb\')") { |v| option.entrypoint = v }
|
38
|
+
option.on('-o VAL', '--output=VAL', 'Name of the generated file. (default: current dir name)') { |v| option.output = v }
|
39
|
+
option.on('-g VAL', '--use-group=VAL', "Group name to use with \'bundle install\'. (default: \'default\')") { |v| option.use_group = v }
|
40
|
+
option.on('--[no-]gemfile', "Use gem in Gemfile. (default: automatically true if Gemfile is present)") { |v| option.gemfile = v }
|
41
|
+
option.on('--ignore-stdlib=VAL', Array, "Specify stdlibs not to include, separated by commas.") { |v| option.ignore_stdlib = v }
|
42
|
+
option.on('--dyn-link-lib=VAL', Array, "Specify libraries to be dynamic link, separated by commas.") { |v| option.dyn_link_lib = v }
|
43
|
+
option.on('--dest-dir=VAL', "Output directry path. (default: current dir)") { |v| option.dest_dir = v }
|
44
|
+
option.on('--ruby-src-path=VAL', "Your Ruby source directry. Must be compiled with \'--with-static-linked-ext\'.") { |v| option.ruby_src_path = v }
|
45
|
+
option.on('--cache-bundle-path=VAL', "Specify the directory created by \'bundle install --standalone\'.") { |v| option.cache_bundle_path = v }
|
46
|
+
option.on('--ruby-version=VAL', "Specify Ruby version. (default: current Ruby version)") { |v| option.ruby_version = v }
|
47
|
+
# option.on('--compress') { |v| option.compress = v }
|
48
|
+
|
49
|
+
option
|
50
|
+
end
|
51
|
+
|
33
52
|
def build
|
34
53
|
@opt.parse!(ARGV)
|
35
54
|
|
@@ -53,9 +72,9 @@ module Kompo
|
|
53
72
|
|
54
73
|
class Tasks
|
55
74
|
extend Forwardable
|
56
|
-
attr_reader :task, :fs, :work_dir, :ruby_src_dir, :ruby_pc, :ruby_bin, :extinit_o, :encinit_o, :lib_ruby_static_dir, :bundle_setup, :bundle_ruby, :std_libs, :gem_libs
|
75
|
+
attr_reader :task, :fs, :work_dir, :ruby_src_dir, :ruby_pc, :ruby_bin, :extinit_o, :encinit_o, :lib_ruby_static_dir, :bundle_setup, :bundle_ruby, :std_libs, :gem_libs, :exts_libs
|
57
76
|
|
58
|
-
delegate %i[entrypoint output gemfile
|
77
|
+
delegate %i[entrypoint output gemfile ignore_stdlib dyn_link_lib dest_dir ruby_src_path cache_bundle_path ruby_version compress context args use_group] => :@option
|
59
78
|
delegate %i[komop_cli lib_kompo_dir] => :@fs
|
60
79
|
|
61
80
|
def initialize(option, dir)
|
@@ -64,14 +83,27 @@ module Kompo
|
|
64
83
|
@work_dir = dir
|
65
84
|
@fs = Fs.new
|
66
85
|
|
67
|
-
@ruby_pc = File.join(ruby_src_path || File.join(dir, 'dest_dir', 'lib', 'pkgconfig'), 'ruby.pc')
|
68
86
|
@ruby_bin = File.join(ruby_src_path || File.join(dir, 'dest_dir', 'bin'), 'ruby')
|
87
|
+
@ruby_pc = File.join(ruby_src_path || File.join(dir, 'dest_dir', 'lib', 'pkgconfig'), get_ruby_pc_name)
|
69
88
|
@extinit_o = File.join(ruby_src_dir, 'ext', 'extinit.o')
|
70
89
|
@encinit_o = File.join(ruby_src_dir, 'enc', 'encinit.o')
|
71
90
|
@lib_ruby_static_dir = ruby_src_path || File.join(dir, 'dest_dir', 'lib')
|
72
91
|
|
73
92
|
@std_libs = []
|
74
93
|
@gem_libs = []
|
94
|
+
@exts_libs = []
|
95
|
+
end
|
96
|
+
|
97
|
+
def get_ruby_pc_name
|
98
|
+
return 'ruby.pc' unless ruby_src_path
|
99
|
+
|
100
|
+
command = [
|
101
|
+
ruby_bin,
|
102
|
+
'-e',
|
103
|
+
"'puts RbConfig::CONFIG[\"ruby_pc\"]'",
|
104
|
+
].join(' ')
|
105
|
+
|
106
|
+
exec_command command, 'get ruby.pc name', true
|
75
107
|
end
|
76
108
|
|
77
109
|
def valid?
|
@@ -108,7 +140,7 @@ module Kompo
|
|
108
140
|
"--disable-install-capi",
|
109
141
|
"--with-static-linked-ext",
|
110
142
|
"--with-ruby-pc=ruby.pc",
|
111
|
-
"--with-ext=#{
|
143
|
+
"--with-ext=#{get_ruby_exts_dir}"
|
112
144
|
].join(' ')
|
113
145
|
exec_command command, 'configure'
|
114
146
|
|
@@ -139,7 +171,7 @@ module Kompo
|
|
139
171
|
command = [
|
140
172
|
'./bundler',
|
141
173
|
'install',
|
142
|
-
|
174
|
+
"--standalone=#{use_group}",
|
143
175
|
].join(' ')
|
144
176
|
|
145
177
|
exec_command command, 'bundle install'
|
@@ -165,33 +197,50 @@ module Kompo
|
|
165
197
|
require 'erb'
|
166
198
|
|
167
199
|
exts = []
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
200
|
+
if gemfile
|
201
|
+
Dir.glob(File.join(bundle_ruby, get_semantic_ruby_version, 'gems/**/extconf.rb')).each do |makefile_dir|
|
202
|
+
dir_name = File.dirname(makefile_dir)
|
203
|
+
makefile = File.join(dir_name, 'Makefile')
|
204
|
+
if File.exist?(cargo_toml = File.join(dir_name, 'Cargo.toml'))
|
205
|
+
command = [
|
206
|
+
'cargo',
|
207
|
+
'rustc',
|
208
|
+
'--release',
|
209
|
+
'--crate-type=staticlib',
|
210
|
+
'--target-dir',
|
211
|
+
'target',
|
212
|
+
"--manifest-path=#{cargo_toml}",
|
213
|
+
].join(' ')
|
214
|
+
exec_command command, 'cargo build'
|
215
|
+
copy_targets = Dir.glob(File.join(dir_name, 'target/release/*.a'))
|
216
|
+
else
|
217
|
+
copy_targets = []
|
218
|
+
Dir.chdir(dir_name) {|path|
|
219
|
+
command = [
|
220
|
+
ruby_bin,
|
221
|
+
'extconf.rb',
|
222
|
+
].join(' ')
|
223
|
+
|
224
|
+
exec_command command, 'ruby extconf.rb'
|
225
|
+
|
226
|
+
objs = File.read('./Makefile').match(/OBJS = (.*\.o)/)[1]
|
227
|
+
|
228
|
+
command = ['make', objs, '--always-make'].join(' ')
|
229
|
+
|
230
|
+
exec_command command, 'make OBJS'
|
231
|
+
|
232
|
+
@exts_libs += File.read('./Makefile').match(/^libpath = (.*)/)[1].split(' ')
|
233
|
+
|
234
|
+
copy_targets = objs.split(' ').map { File.join(dir_name, _1) }
|
235
|
+
}
|
236
|
+
end
|
237
|
+
|
238
|
+
dir = FileUtils.mkdir_p('exts/' + File.basename(dir_name)).first
|
239
|
+
FileUtils.cp(copy_targets, dir)
|
240
|
+
prefix = File.read(makefile).scan(/target_prefix = (.*)/).join.delete_prefix('/')
|
241
|
+
target_name = File.read(makefile).scan(/TARGET_NAME = (.*)/).join
|
242
|
+
exts << [File.join(prefix, "#{target_name}.so").delete_prefix('/'), "Init_#{target_name}"]
|
188
243
|
end
|
189
|
-
|
190
|
-
dir = FileUtils.mkdir_p('exts/' + File.basename(dir_name)).first
|
191
|
-
FileUtils.cp(copy_targets, dir)
|
192
|
-
prefix = File.read(makefile).scan(/target_prefix = (.*)/).join.delete_prefix('/')
|
193
|
-
target_name = File.read(makefile).scan(/TARGET_NAME = (.*)/).join
|
194
|
-
exts << [File.join(prefix, "#{target_name}.so").delete_prefix('/'), "Init_#{target_name}"]
|
195
244
|
end
|
196
245
|
|
197
246
|
File.write("main.c", ERB.new(File.read(File.join(__dir__, 'main.c.erb'))).result(binding))
|
@@ -202,16 +251,19 @@ module Kompo
|
|
202
251
|
'gcc',
|
203
252
|
'-O3',
|
204
253
|
'-Wall',
|
205
|
-
|
206
|
-
'exts/**/*.o',
|
207
|
-
'fs.o',
|
254
|
+
get_ruby_header,
|
208
255
|
"#{lib_ruby_static_dir.nil? ? '' : '-L' + lib_ruby_static_dir}",
|
209
256
|
"#{lib_kompo_dir.nil? ? '' : '-L' + lib_kompo_dir}",
|
210
|
-
|
211
|
-
|
257
|
+
"#{exts_libs.uniq.select{_1.start_with?('/')}.map{"-L#{_1}"}.join(' ')}",
|
258
|
+
'main.c',
|
259
|
+
'-Wl,--start-group',
|
260
|
+
Dir.glob('exts/**/*.o').join(' '),
|
261
|
+
'fs.o',
|
262
|
+
get_ruby_exts,
|
212
263
|
'-lkompo',
|
213
264
|
'-lruby-static',
|
214
265
|
get_libs,
|
266
|
+
'-Wl,--end-group',
|
215
267
|
'-o',
|
216
268
|
output
|
217
269
|
].join(' ')
|
@@ -241,16 +293,37 @@ module Kompo
|
|
241
293
|
end
|
242
294
|
end
|
243
295
|
|
244
|
-
def
|
245
|
-
["#{extinit_o}", "#{encinit_o}", *Dir.glob("#{ruby_src_dir}/ext/**/*.a"), *Dir.glob("#{ruby_src_dir}/enc/**/*.a")].join(' ')
|
296
|
+
def get_ruby_exts
|
297
|
+
["#{extinit_o}", "#{encinit_o}", *(Dir.glob("#{ruby_src_dir}/ext/**/*.a") - ignore_stdlib_archives), *Dir.glob("#{ruby_src_dir}/enc/**/*.a")].join(' ')
|
298
|
+
end
|
299
|
+
|
300
|
+
def ignore_stdlib_archives
|
301
|
+
if ruby_src_path
|
302
|
+
ignore_stdlib.map do |stdlib|
|
303
|
+
File.join(ruby_src_path, 'ext', stdlib, File.basename(stdlib) + '.a')
|
304
|
+
end
|
305
|
+
else
|
306
|
+
[]
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
def extract_gem_libs
|
311
|
+
Dir.glob("bundle/ruby/#{get_semantic_ruby_version}/gems/*/ext/*/Makefile")
|
312
|
+
.flat_map{ File.read(_1)
|
313
|
+
.scan(/^LIBS = (.*)/)[0] }
|
314
|
+
.flat_map { _1.split(' ') }
|
315
|
+
.uniq
|
316
|
+
.flat_map { _1.start_with?("-l") ? _1 : "-l" + File.basename(_1, '.a').delete_prefix('lib') }
|
317
|
+
.join(" ")
|
246
318
|
end
|
247
319
|
|
248
320
|
def get_libs
|
249
321
|
main_lib = get_mainlibs
|
250
322
|
ext_libs = Dir.glob("#{ruby_src_dir}/ext/**/exts.mk").flat_map { File.read(_1).scan(/EXTLIBS = (.*)/) }.join(" ")
|
251
|
-
gem_libs =
|
323
|
+
gem_libs = extract_gem_libs
|
324
|
+
dyn_link_libs = (['pthread', 'dl', 'm', 'c'] + dyn_link_lib).map { "-l" + _1 }
|
252
325
|
dyn, static = eval("%W[#{main_lib} #{ext_libs} #{gem_libs}]").uniq
|
253
|
-
.partition { _1
|
326
|
+
.partition { dyn_link_libs.include?(_1) }
|
254
327
|
dyn.unshift "-Wl,-Bdynamic"
|
255
328
|
static.unshift "-Wl,-Bstatic"
|
256
329
|
|
@@ -275,24 +348,22 @@ module Kompo
|
|
275
348
|
load_paths += gem_libs
|
276
349
|
end
|
277
350
|
|
278
|
-
|
279
|
-
load_paths += std_libs
|
280
|
-
end
|
351
|
+
load_paths += std_libs
|
281
352
|
|
282
353
|
load_paths
|
283
354
|
end
|
284
355
|
|
285
|
-
def
|
356
|
+
def get_ruby_exts_dir
|
286
357
|
Dir.glob("#{ruby_src_dir}/**/extconf.rb")
|
287
358
|
.reject { _1 =~ /-test-/ }
|
288
359
|
.reject { _1 =~ /win32/ } # TODO
|
289
360
|
.map { File.dirname(_1) }
|
290
361
|
.map { _1.split("#{ruby_src_dir}/ext/")[1] }
|
362
|
+
.reject { ignore_stdlib.include?(_1) }
|
291
363
|
.join(',')
|
292
364
|
end
|
293
365
|
|
294
366
|
def std_libs
|
295
|
-
return [] unless stdlib
|
296
367
|
return @std_libs unless @std_libs.empty?
|
297
368
|
|
298
369
|
command = ["#{ruby_bin}", '-e', "'puts $:'"].join(' ')
|
data/lib/main.c.erb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
#include <ruby.h>
|
2
|
-
#include <string.h>
|
3
2
|
|
4
3
|
extern char *get_kompo_patch(void);
|
5
4
|
extern void ruby_init_ext(const char *name, void (*init)(void));
|
@@ -14,14 +13,21 @@ void Init_gems(void)
|
|
14
13
|
ruby_init_ext("<%= so_path %>", <%= func %>);
|
15
14
|
<% end %>
|
16
15
|
}
|
16
|
+
<% ignore_stdlib.each do |stdlib|%>
|
17
|
+
void <%= "Init_#{stdlib.gsub('/', '_')}" %>(void){}
|
18
|
+
<% end %>
|
17
19
|
|
18
20
|
int main(int argc, char **argv)
|
19
21
|
{
|
20
|
-
int c =
|
22
|
+
int c = argc + 2;
|
23
|
+
char *argv2[c];
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
argv2[0] = argv[0];
|
26
|
+
argv2[1] = "-e";
|
27
|
+
argv2[2] = get_kompo_patch();
|
28
|
+
for (int i = 1; i < argc; i++) {
|
29
|
+
argv2[i + 2] = argv[i];
|
30
|
+
}
|
25
31
|
|
26
32
|
ruby_sysinit(&c, &argv);
|
27
33
|
|
@@ -31,7 +37,7 @@ int main(int argc, char **argv)
|
|
31
37
|
Init_kompo_fs();
|
32
38
|
Init_gems();
|
33
39
|
|
34
|
-
void *node = ruby_options(c,
|
40
|
+
void *node = ruby_options(c, argv2);
|
35
41
|
|
36
42
|
// set $0
|
37
43
|
ruby_script(get_start_file_name());
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kompo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sho Hirano
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
12
|
-
dependencies:
|
11
|
+
date: 2024-05-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: mini_portile2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: A tool to pack Ruby and Ruby scripts in one binary. This tool is still
|
14
28
|
under development.
|
15
29
|
email:
|
@@ -30,10 +44,6 @@ files:
|
|
30
44
|
- lib/kompo/kompo_fs.rb
|
31
45
|
- lib/kompo/version.rb
|
32
46
|
- lib/main.c.erb
|
33
|
-
- sample/Gemfile
|
34
|
-
- sample/Gemfile.lock
|
35
|
-
- sample/hello.rb
|
36
|
-
- sample/main.rb
|
37
47
|
- sig/kompo.rbs
|
38
48
|
homepage: https://github.com/ahogappa0613/kompo
|
39
49
|
licenses: []
|
data/sample/Gemfile
DELETED
data/sample/Gemfile.lock
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
base64 (0.2.0)
|
5
|
-
mini_portile2 (2.8.5)
|
6
|
-
mustermann (3.0.0)
|
7
|
-
ruby2_keywords (~> 0.0.1)
|
8
|
-
nio4r (2.7.0)
|
9
|
-
puma (6.4.2)
|
10
|
-
nio4r (~> 2.0)
|
11
|
-
rack (3.0.9.1)
|
12
|
-
rack-protection (4.0.0)
|
13
|
-
base64 (>= 0.1.0)
|
14
|
-
rack (>= 3.0.0, < 4)
|
15
|
-
rack-session (2.0.0)
|
16
|
-
rack (>= 3.0.0)
|
17
|
-
rackup (2.1.0)
|
18
|
-
rack (>= 3)
|
19
|
-
webrick (~> 1.8)
|
20
|
-
ruby2_keywords (0.0.5)
|
21
|
-
sinatra (4.0.0)
|
22
|
-
mustermann (~> 3.0)
|
23
|
-
rack (>= 3.0.0, < 4)
|
24
|
-
rack-protection (= 4.0.0)
|
25
|
-
rack-session (>= 2.0.0, < 3)
|
26
|
-
tilt (~> 2.0)
|
27
|
-
sqlite3 (1.7.2)
|
28
|
-
mini_portile2 (~> 2.8.0)
|
29
|
-
tilt (2.3.0)
|
30
|
-
webrick (1.8.1)
|
31
|
-
|
32
|
-
PLATFORMS
|
33
|
-
aarch64-linux
|
34
|
-
arm-linux
|
35
|
-
arm64-darwin
|
36
|
-
ruby
|
37
|
-
x86-linux
|
38
|
-
x86_64-darwin
|
39
|
-
x86_64-linux
|
40
|
-
|
41
|
-
DEPENDENCIES
|
42
|
-
puma
|
43
|
-
rackup
|
44
|
-
sinatra
|
45
|
-
sqlite3
|
46
|
-
|
47
|
-
BUNDLED WITH
|
48
|
-
2.5.3
|
data/sample/hello.rb
DELETED
data/sample/main.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'sqlite3'
|
2
|
-
require 'sinatra'
|
3
|
-
|
4
|
-
require_relative './hello'
|
5
|
-
|
6
|
-
File.delete("sample.db") if File.exist?("sample.db")
|
7
|
-
|
8
|
-
db = SQLite3::Database.new "sample.db"
|
9
|
-
|
10
|
-
rows = db.execute <<-SQL
|
11
|
-
create table numbers (
|
12
|
-
name varchar(30),
|
13
|
-
val int
|
14
|
-
);
|
15
|
-
SQL
|
16
|
-
|
17
|
-
{
|
18
|
-
"one" => 1,
|
19
|
-
"two" => 2,
|
20
|
-
}.each do |pair|
|
21
|
-
db.execute "insert into numbers values ( ?, ? )", pair
|
22
|
-
end
|
23
|
-
|
24
|
-
set :bind, '0.0.0.0'
|
25
|
-
|
26
|
-
get '/' do
|
27
|
-
rows = db.execute 'select * from numbers;'
|
28
|
-
rows.to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
get '/hello' do
|
32
|
-
Hello::World
|
33
|
-
end
|