Commit 8eab806d authored by kyab's avatar kyab

Add --pull_gems option to minirake

parent 4c8fd521
...@@ -317,6 +317,8 @@ class RakeApp ...@@ -317,6 +317,8 @@ class RakeApp
"Require MODULE before executing rakefile."], "Require MODULE before executing rakefile."],
['--tasks', '-T', GetoptLong::NO_ARGUMENT, ['--tasks', '-T', GetoptLong::NO_ARGUMENT,
"Display the tasks and dependencies, then exit."], "Display the tasks and dependencies, then exit."],
['--pull_gems','-p', GetoptLong::NO_ARGUMENT,
"Pull all git mrbgems."],
['--trace', '-t', GetoptLong::NO_ARGUMENT, ['--trace', '-t', GetoptLong::NO_ARGUMENT,
"Turn on invoke/execute tracing."], "Turn on invoke/execute tracing."],
['--usage', '-h', GetoptLong::NO_ARGUMENT, ['--usage', '-h', GetoptLong::NO_ARGUMENT,
...@@ -401,6 +403,8 @@ class RakeApp ...@@ -401,6 +403,8 @@ class RakeApp
require value require value
when '--tasks' when '--tasks'
$show_tasks = true $show_tasks = true
when '--pull_gems'
$pull_gems = true
when '--trace' when '--trace'
$trace = true $trace = true
when '--usage' when '--usage'
...@@ -419,6 +423,7 @@ class RakeApp ...@@ -419,6 +423,7 @@ class RakeApp
# Read and handle the command line options. # Read and handle the command line options.
def handle_options def handle_options
$verbose = false $verbose = false
$pull_gems = false
opts = GetoptLong.new(*command_line_options) opts = GetoptLong.new(*command_line_options)
opts.each { |opt, value| do_option(opt, value) } opts.each { |opt, value| do_option(opt, value) }
end end
......
...@@ -220,19 +220,28 @@ module MRuby ...@@ -220,19 +220,28 @@ module MRuby
class Command::Git < Command class Command::Git < Command
attr_accessor :flags attr_accessor :flags
attr_accessor :clone_options attr_accessor :clone_options, :pull_options
def initialize(build) def initialize(build)
super super
@command = 'git' @command = 'git'
@flags = [] @flags = []
@clone_options = "clone %{flags} %{url} %{dir}" @clone_options = "clone %{flags} %{url} %{dir}"
@pull_options = "pull"
end end
def run_clone(dir, url, _flags = []) def run_clone(dir, url, _flags = [])
_pp "GIT", url, dir.relative_path _pp "GIT", url, dir.relative_path
_run clone_options, { :flags => [flags, _flags].flatten.join(' '), :url => url, :dir => filename(dir) } _run clone_options, { :flags => [flags, _flags].flatten.join(' '), :url => url, :dir => filename(dir) }
end 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 end
class Command::Mrbc < Command class Command::Mrbc < Command
......
...@@ -40,13 +40,19 @@ module MRuby ...@@ -40,13 +40,19 @@ module MRuby
elsif params[:git] elsif params[:git]
url = params[:git] url = params[:git]
gemdir = "build/mrbgems/#{url.match(/([-\w]+)(\.[-\w]+|)$/).to_a[1]}" gemdir = "build/mrbgems/#{url.match(/([-\w]+)(\.[-\w]+|)$/).to_a[1]}"
return gemdir if File.exists?(gemdir)
if File.exists?(gemdir)
if $pull_gems
git.run_pull gemdir, url
else
gemdir
end
else
options = [params[:options]] || [] options = [params[:options]] || []
options << "--branch \"#{params[:branch]}\"" if params[:branch] options << "--branch \"#{params[:branch]}\"" if params[:branch]
FileUtils.mkdir_p "build/mrbgems" FileUtils.mkdir_p "build/mrbgems"
git.run_clone gemdir, url, options git.run_clone gemdir, url, options
end
else else
fail "unknown gem option #{params}" fail "unknown gem option #{params}"
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment