From 8d54977d259137b61a4e391a3928374d1b29aca3 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 22 Jun 2015 02:23:11 +0900 Subject: Add :mgem gem loader to load mrbgem from mgem-list ( https://github.com/mruby/mgem-list ). --- tasks/mruby_build_gem.rake | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake index dbbade487..d9d2575bd 100644 --- a/tasks/mruby_build_gem.rake +++ b/tasks/mruby_build_gem.rake @@ -52,6 +52,26 @@ module MRuby else params[:git] = "https://bitbucket.org/#{params[:bitbucket]}.git" end + elsif params[:mgem] + mgem_list_dir = "#{gem_clone_dir}/mgem-list" + mgem_list_url = 'https://github.com/mruby/mgem-list.git' + if File.exist? mgem_list_dir + git.run_pull mgem_list_dir, mgem_list_url if $pull_gems + else + FileUtils.mkdir_p mgem_list_dir + git.run_clone mgem_list_dir, mgem_list_url + end + + require 'yaml' + + conf_path = "#{mgem_list_dir}/#{params[:mgem]}.gem" + conf_path = "#{mgem_list_dir}/mruby-#{params[:mgem]}.gem" unless File.exist? conf_path + fail "mgem not found: #{params[:mgem]}" unless File.exist? conf_path + conf = YAML.load File.read conf_path + + fail "unknown mgem protocol: #{conf['protocol']}" if conf['protocol'] != 'git' + params[:git] = conf['repository'] + params[:branch] = conf['branch"] if conf["branch'] end if params[:core] -- cgit v1.2.3 From 0c8fa845e4faf83c50b0df0272c58870832d9e62 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 22 Jun 2015 02:23:52 +0900 Subject: Load missing dependencies from core or mgem-list. --- tasks/mrbgem_spec.rake | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tasks/mrbgem_spec.rake b/tasks/mrbgem_spec.rake index e6e17e182..e22a39e19 100644 --- a/tasks/mrbgem_spec.rake +++ b/tasks/mrbgem_spec.rake @@ -304,7 +304,14 @@ module MRuby default_gems = [] each do |g| g.dependencies.each do |dep| - default_gems << dep if dep[:default] and not gem_table.key? dep[:gem] + unless gem_table.key? dep[:gem] + if dep[:default]; default_gems << dep + elsif File.exist? "#{root}/mrbgems/#{dep[:gem]}" # check core + default_gems << { :gem => dep[:gem], :default => { :core => dep[:gem] } } + else # fallback to mgem-list + default_gems << { :gem => dep[:gem], :default => { :mgem => dep[:gem] } } + end + end end end @@ -316,7 +323,11 @@ module MRuby spec.setup spec.dependencies.each do |dep| - default_gems << dep if dep[:default] and not gem_table.key? dep[:gem] + unless gem_table.key? dep[:gem] + if dep[:default]; default_gems << dep + else default_gems << { :gem => dep[:gem], :default => { :mgem => dep[:gem] } } + end + end end gem_table[spec.name] = spec end -- cgit v1.2.3 From 078d24d4d3f7b5aac436fb70e341e1a7668fdbbb Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Mon, 22 Jun 2015 02:24:15 +0900 Subject: Add documentation to new mgem features. --- doc/mrbgems/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/mrbgems/README.md b/doc/mrbgems/README.md index 101177b13..b24be74e0 100644 --- a/doc/mrbgems/README.md +++ b/doc/mrbgems/README.md @@ -26,6 +26,15 @@ conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master' conf.gem :bitbucket => 'mruby/mrbgems-example', :branch => 'master' ``` +To use mrbgem from [mgem-list](https://github.com/mruby/mgem-list) use `:mgem` option: +```ruby +conf.gem :mgem => 'mruby-yaml' +conf.gem :mgem => 'yaml' # 'mruby-' prefix could be ignored +``` + +If there is missing dependencies, mrbgem dependencies solver will reference +mrbgem from core or mgem-list. + To pull all gems from remote GIT repository on build, call ```./minirake -p```, or ```./minirake --pull-gems```. -- cgit v1.2.3