diff options
| -rw-r--r-- | AUTHORS | 1 | ||||
| -rwxr-xr-x | minirake | 5 | ||||
| -rw-r--r-- | tasks/mruby_build_commands.rake | 11 | ||||
| -rw-r--r-- | tasks/mruby_build_gem.rake | 18 |
4 files changed, 28 insertions, 7 deletions
@@ -13,3 +13,4 @@ Original Authors "mruby developers" are: Tadashi FUKUZAWA MATSUMOTO Ryosuke Yasuhiro Matsumoto + Koji Yoshioka @@ -317,6 +317,8 @@ class RakeApp "Require MODULE before executing rakefile."], ['--tasks', '-T', GetoptLong::NO_ARGUMENT, "Display the tasks and dependencies, then exit."], + ['--pull_gems','-p', GetoptLong::NO_ARGUMENT, + "Pull all git mrbgems."], ['--trace', '-t', GetoptLong::NO_ARGUMENT, "Turn on invoke/execute tracing."], ['--usage', '-h', GetoptLong::NO_ARGUMENT, @@ -401,6 +403,8 @@ class RakeApp require value when '--tasks' $show_tasks = true + when '--pull_gems' + $pull_gems = true when '--trace' $trace = true when '--usage' @@ -419,6 +423,7 @@ class RakeApp # Read and handle the command line options. def handle_options $verbose = false + $pull_gems = false opts = GetoptLong.new(*command_line_options) opts.each { |opt, value| do_option(opt, value) } end diff --git a/tasks/mruby_build_commands.rake b/tasks/mruby_build_commands.rake index 1d69fa54d..b678b1f0e 100644 --- a/tasks/mruby_build_commands.rake +++ b/tasks/mruby_build_commands.rake @@ -220,19 +220,28 @@ module MRuby class Command::Git < Command attr_accessor :flags - attr_accessor :clone_options + attr_accessor :clone_options, :pull_options def initialize(build) super @command = 'git' @flags = [] @clone_options = "clone %{flags} %{url} %{dir}" + @pull_options = "pull" end def run_clone(dir, url, _flags = []) _pp "GIT", url, dir.relative_path _run clone_options, { :flags => [flags, _flags].flatten.join(' '), :url => url, :dir => filename(dir) } end + + def run_pull(dir, url) + root = Dir.pwd + Dir.chdir dir + _pp "GIT PULL", url, dir.relative_path + _run pull_options + Dir.chdir root + end end class Command::Mrbc < Command diff --git a/tasks/mruby_build_gem.rake b/tasks/mruby_build_gem.rake index 870ccfa57..975b032a6 100644 --- a/tasks/mruby_build_gem.rake +++ b/tasks/mruby_build_gem.rake @@ -40,13 +40,19 @@ module MRuby elsif params[:git] url = params[:git] gemdir = "build/mrbgems/#{url.match(/([-\w]+)(\.[-\w]+|)$/).to_a[1]}" - return gemdir if File.exists?(gemdir) - options = [params[:options]] || [] - options << "--branch \"#{params[:branch]}\"" if params[:branch] - - FileUtils.mkdir_p "build/mrbgems" - git.run_clone gemdir, url, options + if File.exists?(gemdir) + if $pull_gems + git.run_pull gemdir, url + else + gemdir + end + else + options = [params[:options]] || [] + options << "--branch \"#{params[:branch]}\"" if params[:branch] + FileUtils.mkdir_p "build/mrbgems" + git.run_clone gemdir, url, options + end else fail "unknown gem option #{params}" end |
