Class: Excavate::Archive

Inherits:
Object
  • Object
show all
Defined in:
lib/excavate/archive.rb

Instance Method Summary collapse

Constructor Details

#initialize(archive) ⇒ Archive

Returns a new instance of Archive.



5
6
7
# File 'lib/excavate/archive.rb', line 5

def initialize(archive)
  @archive = archive
end

Instance Method Details

#extract(target = nil, recursive_packages: false, files: [], filter: nil) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/excavate/archive.rb', line 26

def extract(target = nil,
            recursive_packages: false,
            files: [],
            filter: nil)
  recursive_packages = true if files.any?

  if files.size.positive?
    extract_selection(target, Selection.from_files(files),
                      recursive_packages: recursive_packages)
  elsif filter
    extract_selection(target, Selection.from_filter(filter),
                      recursive_packages: recursive_packages)
  else
    extract_all(target, recursive_packages: recursive_packages)
  end
end

#files(recursive_packages: false, files: [], filter: nil, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/excavate/archive.rb', line 9

def files(recursive_packages: false, files: [], filter: nil, &block)
  unless block
    return enum_for(:files, recursive_packages: recursive_packages,
                            files: files, filter: filter)
  end

  recursive_packages = true if files.any?

  target = Dir.mktmpdir
  extract(target, recursive_packages: recursive_packages,
                  files: files, filter: filter)

  all_files_in(target).each(&block)
ensure
  Filesystem.remove_recursive(target) if target
end