summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
Diffstat (limited to 'tool')
-rwxr-xr-xtool/extlibs.rb44
1 files changed, 27 insertions, 17 deletions
diff --git a/tool/extlibs.rb b/tool/extlibs.rb
index 6323d8fdcd..710d8433b5 100755
--- a/tool/extlibs.rb
+++ b/tool/extlibs.rb
@@ -3,9 +3,6 @@ require 'fileutils'
require 'digest'
require_relative 'downloader'
-cache_dir = ".downloaded-cache"
-FileUtils.mkdir_p(cache_dir)
-
def do_download(url, base, cache_dir)
Downloader.download(url, base, cache_dir, nil)
end
@@ -74,23 +71,36 @@ def do_patch(dest, patch, args)
$?.success? or raise "failed to patch #{patch}"
end
-case ARGV[0]
-when '--download'
- mode = :download
- ARGV.shift
-when '--extract'
- mode = :extract
- ARGV.shift
-when '--patch'
- mode = :patch
- ARGV.shift
-when '--all'
- mode = :all
+cache_dir = ENV['CACHE_DIR'] || ".downloaded-cache"
+mode = :all
+until ARGV.empty?
+ case ARGV[0]
+ when '--download'
+ mode = :download
+ when '--extract'
+ mode = :extract
+ when '--patch'
+ mode = :patch
+ when '--all'
+ mode = :all
+ when '--cache'
+ ARGV.shift
+ cache_dir = ARGV[0]
+ when /\A--cache=/
+ cache_dir = $'
+ when '--'
+ ARGV.shift
+ break
+ when /\A-/
+ abort "unknown option: #{ARGV[0]}"
+ else
+ break
+ end
ARGV.shift
-else
- mode = :all
end
+FileUtils.mkdir_p(cache_dir)
+
success = true
ARGV.each do |dir|
Dir.glob("#{dir}/**/extlibs") do |list|