Class: XcodeArchiveCache::Injection::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/injection/storage.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Storage

Returns a new instance of Storage.

Parameters:

  • path (String)


15
16
17
18
19
20
# File 'lib/injection/storage.rb', line 15

def initialize(path)
  @container_dir_path = path
  @headers_storage_dir_paths = Hash.new

  prepare_container_dir
end

Instance Attribute Details

#container_dir_pathString (readonly)

Returns:

  • (String)


7
8
9
# File 'lib/injection/storage.rb', line 7

def container_dir_path
  @container_dir_path
end

#headers_storage_dir_pathsHash{XcodeArchiveCache::BuildGraph::Node => String} (readonly)

Returns:



11
12
13
# File 'lib/injection/storage.rb', line 11

def headers_storage_dir_paths
  @headers_storage_dir_paths
end

Instance Method Details

#get_all_headers_storage_pathsObject



103
104
105
106
107
108
# File 'lib/injection/storage.rb', line 103

def get_all_headers_storage_paths
  headers_storage_dir_paths
      .map { |_, path| path }
      .flatten
      .uniq
end

#get_default_headers_storage_path(node) ⇒ String

Parameters:

Returns:

  • (String)


114
115
116
# File 'lib/injection/storage.rb', line 114

def get_default_headers_storage_path(node)
  "include/#{node.name}"
end

#get_headers_storage_paths(node) ⇒ String

Parameters:

Returns:

  • (String)


99
100
101
# File 'lib/injection/storage.rb', line 99

def get_headers_storage_paths(node)
  headers_storage_dir_paths[node.name]
end

#get_modulemap_path(node) ⇒ String

Parameters:

Returns:

  • (String)


55
56
57
58
59
60
61
62
# File 'lib/injection/storage.rb', line 55

def get_modulemap_path(node)
  modulemap_file_name = node.resulting_modulemap_file_name
  return if modulemap_file_name == nil

  storage_path = get_storage_path(node)
  stored_modulemap_file_path = get_stored_file_path(storage_path, modulemap_file_name)
  File.exist?(stored_modulemap_file_path) ? stored_modulemap_file_path : nil
end

#get_storage_path(node) ⇒ String

Parameters:

Returns:

  • (String)


91
92
93
# File 'lib/injection/storage.rb', line 91

def get_storage_path(node)
  File.join(container_dir_path, node.name)
end

#prepare_storage(node) ⇒ Object



77
78
79
80
81
82
83
84
85
# File 'lib/injection/storage.rb', line 77

def prepare_storage(node)
  path = get_storage_path(node)
  if File.exist?(path)
    raise StandardError.new, "Injection storage path is already busy"
  end

  FileUtils.mkdir_p(path)
  path
end

#store_default_headers(node, file_paths) ⇒ Object

Parameters:



43
44
45
# File 'lib/injection/storage.rb', line 43

def store_default_headers(node, file_paths)
  store_headers(node, get_default_headers_storage_path(node), file_paths)
end

#store_headers(node, path, file_paths, save_path = true) ⇒ Object

Parameters:



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/injection/storage.rb', line 26

def store_headers(node, path, file_paths, save_path = true)
  storage_path = Pathname.new(path).absolute? ? path : get_full_header_storage_path(path)

  unless File.exist?(storage_path)
    FileUtils.mkdir_p(storage_path)
  end

  file_paths.each do |file_path|
    FileUtils.cp(file_path, get_stored_file_path(storage_path, file_path))
  end

  save_header_storage_path(storage_path, node) if save_path
end

#store_modulemap_headers(node, file_paths) ⇒ Object



47
48
49
# File 'lib/injection/storage.rb', line 47

def store_modulemap_headers(node, file_paths)
  store_headers(node, get_storage_path(node), file_paths, false)
end

#store_products(node, file_paths) ⇒ Object

Parameters:



67
68
69
70
71
72
73
# File 'lib/injection/storage.rb', line 67

def store_products(node, file_paths)
  storage_path = prepare_storage(node)

  file_paths.each do |path|
    FileUtils.cp_r(path, storage_path)
  end
end