mruby_app 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2d3533479b7bd02178a001a586c1e2487db1e5e05ddf3e72bcd10d8fe70ddf47
4
+ data.tar.gz: de71e394c1674485d5524b4267aaa5579afcfd163ae7e95489181d714cd319c0
5
+ SHA512:
6
+ metadata.gz: 4988327fd4ffe73e1d3e2c7271cd8127e6379a19dd19ce2cc008169427454ba92ade723eccd51b4159907ed807c91af0e464ba324329dc235361af70fad7494b
7
+ data.tar.gz: 1d5a0031a94821ba67c05742df693f50337766432a763ec424ef6eb4a64e68f44933f531d354354d8005ae4e2beedcc6218458ff722e190cb6b5220aa3104e18
data/exe/mapp ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "mruby_app"
4
+
5
+ MrubyApp::CLI.start
data/lib/mruby_app.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "tempfile"
2
+
3
+ require "mruby_app/version"
4
+ require "mruby_app/cli"
@@ -0,0 +1,40 @@
1
+ module MrubyApp
2
+ module CLI
3
+ def self.start
4
+ has_mundler = File.file?(File.join(Dir.pwd, "Mundlefile"))
5
+
6
+ mrbc = "mrbc"
7
+ mrbc = "mundle exec mrbc" if has_mundler
8
+
9
+ mruby = "mruby"
10
+ mruby = "mundle exec mruby" if has_mundler
11
+
12
+ file = Tempfile.new('foo')
13
+ output = file.path
14
+
15
+ app_files = Dir.glob(File.join("app", "**", "*.rb"))
16
+ additional = Dir.glob(File.join(__dir__, "mruby", "*.rb"))
17
+ additional.map! { |f| File.expand_path(f) }
18
+
19
+ compile = (%W(#{mrbc} -g -o#{output}) + app_files + additional).join(" ")
20
+ chmod = "chmod +x #{output}"
21
+ execute = "#{mruby} -d #{output}"
22
+
23
+ # TODO: build
24
+ # build = (%W(#{mrbc} -Bapp -g -o./build.c) + app_files + additional).join(" ")
25
+ # system(build)
26
+
27
+ system(compile) || raise("Failed to compiled")
28
+ system(chmod) || raise("Failed to chmod")
29
+ begin
30
+ system(execute)
31
+ rescue Interrupt
32
+ end
33
+ ensure
34
+ if file
35
+ file.close
36
+ file.unlink
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,21 @@
1
+ class Object
2
+ def method_missing(meth, *args, &blk)
3
+ raise NoMethodError, "Undefined method '#{meth}' for #{self.class} - #{self.inspect}"
4
+ end
5
+ end
6
+
7
+ begin
8
+ main
9
+ rescue => e
10
+ $stderr.print "\n\e[31m"
11
+ $stderr.print e.inspect
12
+ $stderr.puts "\e[0m"
13
+ e.backtrace.each.with_index do |line, index|
14
+ file = line.split(":").first
15
+ next if file == __FILE__
16
+
17
+ $stderr.print "\e[36m"
18
+ $stderr.puts line
19
+ $stderr.print "\e[0m"
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module MrubyApp
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mruby_app
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Inkpen
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-07-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: A CLI tool for using Ruby (mruby) code as a project.
28
+ email:
29
+ - dan2552@gmail.com
30
+ executables:
31
+ - mapp
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - exe/mapp
36
+ - lib/mruby_app.rb
37
+ - lib/mruby_app/cli.rb
38
+ - lib/mruby_app/mruby/main.rb
39
+ - lib/mruby_app/version.rb
40
+ homepage: https://github.com/Dan2552/mruby_app
41
+ licenses:
42
+ - MIT
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubygems_version: 3.0.3
60
+ signing_key:
61
+ specification_version: 4
62
+ summary: A CLI tool for using Ruby (mruby) code as a project.
63
+ test_files: []