mrb 0.0.6 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e14cfba78a14ede89c6cf16eef27c1b5b61549a1
4
- data.tar.gz: cf58ec56a3f4cb7ff73e5f24476dca6fae6b22d0
3
+ metadata.gz: 264963a85561a0e0380b8e1f69e482b604736f9a
4
+ data.tar.gz: 0e1793cde02af8d35089381430bd64822ddeaee7
5
5
  SHA512:
6
- metadata.gz: de7499557cefe2f80214eb6dcb29ebcdc8d4edd8c074cf5fe3f78cdda2603fc91b39d4f33764045b581e3942ffe358c35bd0c2d18dba50df9ca2f3819c5456d5
7
- data.tar.gz: 8f9fa6a1ab3e48fe76ce34b465fa22fd6d7957723062b40fabd1c8b03d5b1ab3b213b824f27787c506af97cf81d2897a2dda4c282af068baf4d2f924da5f1345
6
+ metadata.gz: 10dbbb0bf347eb158f1f4ea805a328ca0f35d977ab479c4b8c95eabe8822bd17b8db7d8d076038ca54e2f55f83b675535ca42dfb87ee3169d4a857da64b38fca
7
+ data.tar.gz: 5547fff79796c3be317564ca26188cc02e399351ef43ec36c0fac1e00c1ce03b845f55a60e4d131bdee3756eeea4d556d97cf06edf24ffde699c350e1df4187e
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mrb.gemspec
4
4
  gemspec
5
+ gem "test-unit"
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Mrb
2
2
 
3
+ ![Gem](https://img.shields.io/gem/v/formatador.svg)
4
+
3
5
  The Command Line Interface is a unified tool to manage your mruby and mrbgems.
4
6
 
5
7
  ## Installation
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require 'rake/testtask'
3
4
 
4
- RSpec::Core::RakeTask.new(:spec)
5
+ Rake::TestTask.new do |t|
6
+ t.libs << 'test'
7
+ end
5
8
 
6
- task :default => :spec
9
+ task :default => :test
@@ -0,0 +1,12 @@
1
+ MRuby::Build.new do |conf|
2
+ toolchain :gcc
3
+
4
+ conf.gem File.dirname __FILE__
5
+
6
+ enable_debug
7
+
8
+ conf.enable_bintest
9
+ conf.enable_test
10
+
11
+ conf.gembox 'default'
12
+ end
data/lib/mrb.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "mrb/version"
2
+ require 'mrb/util.rb'
2
3
  require "mrb/cli.rb"
3
4
  require 'mrb/template.rb'
4
- require 'mrb/util.rb'
5
5
 
6
6
  module Mrb
7
7
  # Your code goes here...
data/lib/mrb/cli.rb CHANGED
@@ -1,10 +1,13 @@
1
1
  require 'thor'
2
- require 'erb'
3
2
  require 'fileutils'
4
3
  require 'yaml'
4
+ require "mrb/version"
5
+ require "mrb/config"
5
6
 
6
7
  module Mrb
7
8
  class CLI < Thor
9
+ MRB_CONFIG_PATH = ".mrb"
10
+
8
11
  desc "get", "get mruby source code"
9
12
  def get()
10
13
  %x{git clone https://github.com/mruby/mruby.git}
@@ -18,10 +21,21 @@ module Mrb
18
21
  FileUtils.mkdir_p full_name
19
22
  puts "Creating gem '#{full_name}'..."
20
23
 
24
+ FileUtils.mkdir_p "#{full_name}/#{MRB_CONFIG_PATH}"
25
+
26
+ config = nil
27
+ if File.exist? "#{full_name}/#{MRB_CONFIG_PATH}/config"
28
+ config = Config.load "#{full_name}/#{MRB_CONFIG_PATH}/config"
29
+ else
30
+ config = Config.create "#{full_name}/#{MRB_CONFIG_PATH}/config"
31
+ end
32
+
21
33
  File.write "#{full_name}/README.md", Mrb::Template.render_readme(variables)
22
34
  puts " create #{full_name}/README.md"
23
35
  File.write "#{full_name}/mrbgem.rake", Mrb::Template.render_mrbgem(variables)
24
36
  puts " create #{full_name}/mrbgem.rake"
37
+ File.write "#{full_name}/mrb-build_config.rb", Mrb::Template.render_mrb_build_config(variables)
38
+ puts " create #{full_name}/mrb-build_config.rb"
25
39
 
26
40
  FileUtils.mkdir_p "#{full_name}/src"
27
41
  File.write "#{full_name}/src/example.c", Mrb::Template.render_example_c(variables)
@@ -96,9 +110,114 @@ module Mrb
96
110
  end
97
111
  end
98
112
 
99
- desc "version", "show version number"
113
+ desc "install", "install mruby"
114
+ option :list, :aliases => :l
115
+ def install(version = "")
116
+ available_versions = %w(1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 master)
117
+
118
+ if options[:list]
119
+ puts "available versions:"
120
+ available_versions.each {|v| puts " #{v}"}
121
+ return
122
+ end
123
+
124
+ unless available_versions.include?(version)
125
+ $stderr.puts "Error: Not supported version. version=#{version}"
126
+ return
127
+ end
128
+
129
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
130
+
131
+ if File.directory? "#{MRB_CONFIG_PATH}/#{version}"
132
+ $stderr.puts "Error: already exists path=#{MRB_CONFIG_PATH}/#{version}"
133
+ return
134
+ end
135
+
136
+ config["current"]["version"] = version
137
+ config["current"]["installed"] << version unless config["current"]["installed"].include? version
138
+ Config.save "#{MRB_CONFIG_PATH}/config", config
139
+
140
+ system Util.git_clone_command(config["mruby"]["url"], version, MRB_CONFIG_PATH)
141
+ invoke :rake, "", {}
142
+ end
143
+
144
+ desc "uninstall", "uninstall a specific mruby"
145
+ def uninstall(version)
146
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
147
+ unless config["current"]["installed"].include? version
148
+ $stderr.puts "Error: not found. version=#{version}"
149
+ return
150
+ end
151
+
152
+ print "Are you sure you want to remove mruby? (y/n): "
153
+ answer = STDIN.gets.chomp
154
+ unless answer == "y"
155
+ $stderr.puts "cancel"
156
+ return
157
+ end
158
+
159
+ config["current"]["version"] = "" if config["current"]["version"] == version
160
+ config["current"]["installed"] = config["current"]["installed"].delete_if {|v| v == version }
161
+ Config.save "#{MRB_CONFIG_PATH}/config", config
162
+
163
+ FileUtils.rm_rf "#{MRB_CONFIG_PATH}/#{version}"
164
+ puts "done."
165
+ end
166
+
167
+ desc "versions", "list installed mruby version"
168
+ def versions()
169
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
170
+ current_version = config["current"]["version"]
171
+ config["current"]["installed"].each do |version|
172
+ if current_version == version
173
+ print "* "
174
+ else
175
+ print " "
176
+ end
177
+ puts "#{version} (set by #{MRB_CONFIG_PATH}/#{version})"
178
+ end
179
+ end
180
+
181
+ desc "version", "show current mruby version"
100
182
  def version()
101
- puts Mrb::VERSION
183
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
184
+ version = config["current"]["version"]
185
+
186
+ puts "#{version} (set by #{MRB_CONFIG_PATH}/#{version})"
187
+ end
188
+
189
+ desc "use", "switch mruby version"
190
+ def use(version)
191
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
192
+ unless config["current"]["installed"].include? version
193
+ $stderr.puts "Error: not found. version=#{version}"
194
+ return
195
+ end
196
+
197
+ config["current"]["version"] = version
198
+ Config.save "#{MRB_CONFIG_PATH}/config", config
199
+
200
+ invoke :version, [], {}
201
+ end
202
+
203
+ desc "test", "execute mruby test"
204
+ def test()
205
+ invoke :rake, ["test"], {}
206
+ end
207
+
208
+ desc "clean", "clean up build files"
209
+ def clean()
210
+ invoke :rake, ["clean"], {}
211
+ end
212
+
213
+ desc "rake", "execute mruby minirake task"
214
+ def rake(task = "")
215
+ config = Config.load "#{MRB_CONFIG_PATH}/config"
216
+ version = config["current"]["version"]
217
+
218
+ Dir.chdir("#{MRB_CONFIG_PATH}/#{version}") do
219
+ system "MRUBY_CONFIG=../../mrb-build_config.rb ./minirake #{task}"
220
+ end
102
221
  end
103
222
  end
104
223
  end
data/lib/mrb/config.rb ADDED
@@ -0,0 +1,34 @@
1
+ require "yaml"
2
+
3
+ module Mrb
4
+ class Config
5
+ DEFAULT_CONFIG = {
6
+ "mruby" => {
7
+ "url" => "https://github.com/mruby/mruby.git",
8
+ "tag" => []
9
+ },
10
+ "current" => {
11
+ "version" => "",
12
+ "installed" => []
13
+ }
14
+ }
15
+
16
+ def self.create(config_path)
17
+ File.open(config_path, "w") do |fout|
18
+ YAML.dump(DEFAULT_CONFIG, fout)
19
+ end
20
+ DEFAULT_CONFIG
21
+ end
22
+
23
+ def self.load(config_path)
24
+ YAML.load_file(config_path)
25
+ end
26
+
27
+ def self.save(config_path, config)
28
+ File.open(config_path, "w") do |fout|
29
+ YAML.dump(config, fout)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
data/lib/mrb/template.rb CHANGED
@@ -24,6 +24,10 @@ module Mrb
24
24
  render('gem/mrbgem.rake.erb', variables)
25
25
  end
26
26
 
27
+ def self.render_mrb_build_config(variables)
28
+ render('gem/build_config.rb.erb', variables)
29
+ end
30
+
27
31
  def self.render_example_c(variables)
28
32
  render('gem/example.c.erb', variables)
29
33
  end
data/lib/mrb/util.rb CHANGED
@@ -15,5 +15,11 @@ module Mrb
15
15
  :name => name,
16
16
  }
17
17
  end
18
+
19
+ def self.git_clone_command(mruby_repo_url, version, mrb_config_path)
20
+ git_cone_cmd = "git clone --depth=1 "
21
+ git_cone_cmd << " -b #{version} " unless version.casecmp("master") == 0
22
+ git_cone_cmd << " #{mruby_repo_url} #{mrb_config_path}/#{version}"
23
+ end
18
24
  end
19
25
  end
data/lib/mrb/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mrb
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - qtakamitsu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-07 00:00:00.000000000 Z
11
+ date: 2018-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,6 +86,7 @@ files:
86
86
  - assets/templates/config/build_config_crossbuild.erb
87
87
  - assets/templates/config/build_config_host.erb
88
88
  - assets/templates/gem/README.md.erb
89
+ - assets/templates/gem/build_config.rb.erb
89
90
  - assets/templates/gem/example.c.erb
90
91
  - assets/templates/gem/mrbgem.rake.erb
91
92
  - assets/templates/gem/test_example.c.erb
@@ -95,6 +96,7 @@ files:
95
96
  - exe/mrb
96
97
  - lib/mrb.rb
97
98
  - lib/mrb/cli.rb
99
+ - lib/mrb/config.rb
98
100
  - lib/mrb/template.rb
99
101
  - lib/mrb/util.rb
100
102
  - lib/mrb/version.rb