Class: Pod::Installer::Analyzer::SandboxAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods/installer/analyzer/sandbox_analyzer.rb

Overview

Analyze the sandbox to detect which Pods should be removed, and which ones should be reinstalled.

The logic is the following:

Added

  • If not present in the sandbox lockfile.

  • The directory of the Pod doesn’t exits.

Changed

  • The version of the Pod changed.

  • The SHA of the specification file changed.

  • The specific installed (sub)specs of the same Pod changed.

  • The specification is in head mode or from an external source and the installation process is in update mode.

  • The directory of the Pod is empty.

  • The Pod has been pre-downloaded.

Removed

  • If a specification is present in the lockfile but not in the resolved specs.

Unchanged

  • If none of the above conditions match.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sandbox, specs, update_mode, lockfile = nil) ⇒ SandboxAnalyzer

Init a new SandboxAnalyzer

Parameters:

  • sandbox (Sandbox)

    @see sandbox

  • specs (Array<Specifications>)

    @see specs

  • update_mode (Bool)

    @see update_mode

  • lockfile (Lockfile) (defaults to: nil)

    @see lockfile



61
62
63
64
65
66
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 61

def initialize(sandbox, specs, update_mode, lockfile = nil)
  @sandbox = sandbox
  @specs = specs
  @update_mode = update_mode
  @lockfile = lockfile
end

Instance Attribute Details

#lockfileLockfile (readonly)

TODO:

Remove for CP 0.18.

Returns The lockfile of the installation as a fall-back if there is no sandbox manifest. This is indented as a temporary solution to prevent the full re-installation from users which are upgrading from CP < 0.17.

Returns:

  • (Lockfile)

    The lockfile of the installation as a fall-back if there is no sandbox manifest. This is indented as a temporary solution to prevent the full re-installation from users which are upgrading from CP < 0.17.



52
53
54
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 52

def lockfile
  @lockfile
end

#sandboxSandbox (readonly)

Returns The sandbox to analyze.

Returns:

  • (Sandbox)

    The sandbox to analyze.



32
33
34
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 32

def sandbox
  @sandbox
end

#specsArray<Specifications> (readonly)

Returns The specifications returned by the resolver.

Returns:

  • (Array<Specifications>)

    The specifications returned by the resolver.



37
38
39
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 37

def specs
  @specs
end

#update_modeBool (readonly) Also known as: update_mode?

Returns Whether the installation is performed in update mode.

Returns:

  • (Bool)

    Whether the installation is performed in update mode.



41
42
43
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 41

def update_mode
  @update_mode
end

Instance Method Details

#analyzevoid

This method returns an undefined value.

Performs the analysis to the detect the state of the sandbox respect to the resolved specifications.



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/cocoapods/installer/analyzer/sandbox_analyzer.rb', line 73

def analyze
  state = SpecsState.new
  if sandbox_manifest
    all_names = (resolved_pods + sandbox_pods).uniq.sort
    all_names.sort.each do |name|
      state.add_name(name, pod_state(name))
    end
  else
    state.added.concat(resolved_pods)
  end
  state
end