class Autoproj::CLI::Cache
Public Instance Methods
parse_gem_compile(string)
click to toggle source
# File lib/autoproj/cli/cache.rb, line 9 def parse_gem_compile(string) scanner = StringScanner.new(string) name = scanner.scan(/[^\[]+/) level = 0 artifacts = [] artifact_include = nil artifact_name = "".dup until scanner.eos? c = scanner.getch if level == 0 raise ArgumentError, "expected '[' but got '#{c}'" unless c == "[" level = 1 include_c = scanner.getch if %w[+ -].include?(include_c) artifact_include = (include_c == "+") elsif include_c == "]" raise ArgumentError, "empty [] found in '#{string}'" else raise ArgumentError, "expected '+' or '-' but got '#{c}' in '#{string}'" end next end if c == "]" level -= 1 if level == 0 artifacts << [artifact_include, artifact_name] artifact_name = "".dup next end end artifact_name << c end raise ArgumentError, "missing closing ']' in #{string}" if level != 0 [name, artifacts: artifacts] end
run(cache_dir, *package_names, keep_going: false, packages: true, all: true, checkout_only: false, gems: false, gems_compile: [], gems_compile_force: false)
click to toggle source
# File lib/autoproj/cli/cache.rb, line 77 def run(cache_dir, *package_names, keep_going: false, packages: true, all: true, checkout_only: false, gems: false, gems_compile: [], gems_compile_force: false) initialize_and_load finalize_setup cache_op = Autoproj::Ops::Cache.new(cache_dir, ws) if packages cache_op.create_or_update( *package_names, all: all, keep_going: keep_going, checkout_only: checkout_only ) end if gems Autoproj.message "caching gems in #{cache_op.gems_cache_dir}" cache_op.create_or_update_gems( keep_going: keep_going, compile: gems_compile, compile_force: gems_compile_force ) end end
validate_options(argv, options = Hash.new)
click to toggle source
Calls superclass method
# File lib/autoproj/cli/cache.rb, line 52 def validate_options(argv, options = Hash.new) argv, options = super if argv.empty? default_cache_dirs = Autobuild::Importer.default_cache_dirs if !default_cache_dirs || default_cache_dirs.empty? raise CLIInvalidArguments, "no cache directory defined with e.g. the "\ "AUTOBUILD_CACHE_DIR environment variable, "\ "expected one cache directory as argument" end Autoproj.warn "using cache directory #{default_cache_dirs.first} "\ "from the autoproj configuration" argv << default_cache_dirs.first end if (compile = options[:gems_compile]) options[:gems_compile] = compile.map do |name| parse_gem_compile(name) end end [File.expand_path(argv.first, ws.root_dir), *argv[1..-1], options] end