Class: Pod::Command::Spec

Inherits:
Pod::Command show all
Defined in:
lib/cocoapods/command/spec.rb,
lib/cocoapods/command/spec/cat.rb,
lib/cocoapods/command/spec/edit.rb,
lib/cocoapods/command/spec/which.rb,
lib/cocoapods/command/spec/create.rb

Direct Known Subclasses

Cat, Create, Edit, Which

Defined Under Namespace

Classes: Cat, Create, Edit, Which

Instance Method Summary collapse

Methods inherited from Pod::Command

#ensure_master_spec_repo_exists!, ensure_not_root_or_allowed!, git_version, #initialize, #installer_for_config, options, report_error, run, #verify_lockfile_exists!, verify_minimum_git_version!, #verify_podfile_exists!, verify_xcode_license_approved!

Methods included from Pod::Config::Mixin

#config

Constructor Details

This class inherits a constructor from Pod::Command

Instance Method Details

#all_paths_from_set(set) ⇒ String (private)

Returns of spec paths one on each line.

Returns:

  • (String)

    of spec paths one on each line


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/cocoapods/command/spec.rb', line 70

def all_paths_from_set(set)
  paths = ''

  sources = set.sources

  sources.each do |source|
    versions = source.versions(set.name)

    versions.each do |version|
      spec = source.specification(set.name, version)
      paths += "#{pathname_from_spec(spec, source)}\n"
    end
  end

  paths
end

#get_path_of_spec(spec, show_all = false) ⇒ Pathname (private)

Returns the absolute path or paths of the given podspec.

Parameters:

  • spec (String)

    The name of the specification.

  • show_all (Bool) (defaults to: false)

    Whether the paths for all the versions should be returned or only the one for the last version.

Returns:

  • (Pathname)

    the absolute path or paths of the given podspec


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/cocoapods/command/spec.rb', line 42

def get_path_of_spec(spec, show_all = false)
  sets = config.sources_manager.search_by_name(spec)

  if sets.count == 1
    set = sets.first
  elsif sets.map(&:name).include?(spec)
    set = sets.find { |s| s.name == spec }
  else
    names = sets.map(&:name) * ', '
    raise Informative, "More than one spec found for '#{spec}':\n#{names}"
  end

  unless show_all
    best_spec, spec_source = spec_and_source_from_set(set)
    return pathname_from_spec(best_spec, spec_source)
  end

  all_paths_from_set(set)
end

#pathname_from_spec(spec, _source) ⇒ Pathname (private)

Returns the absolute path of the given spec and source.

Returns:

  • (Pathname)

    the absolute path of the given spec and source


64
65
66
# File 'lib/cocoapods/command/spec.rb', line 64

def pathname_from_spec(spec, _source)
  Pathname(spec.defined_in_file)
end

#spec_and_source_from_set(set) ⇒ Specification, Source (private)

Returns the highest known specification with it's source of the given set.

Returns:

  • (Specification, Source)

    the highest known specification with it's source of the given set.


90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/cocoapods/command/spec.rb', line 90

def spec_and_source_from_set(set)
  sources = set.sources

  best_source = best_version = nil
  sources.each do |source|
    versions = source.versions(set.name)
    versions.each do |version|
      if !best_version || version > best_version
        best_source = source
        best_version = version
      end
    end
  end

  if !best_source || !best_version
    raise Informative, "Unable to locate highest known specification for `#{set.name}'"
  end

  [best_source.specification(set.name, best_version), best_source]
end

#validate_regex!(query) ⇒ Object (private)

Parameters:

  • query (String)

    the regular expression string to validate

Raises:

  • if the query is not a valid regular expression


27
28
29
30
31
# File 'lib/cocoapods/command/spec.rb', line 27

def validate_regex!(query)
  /#{query}/
rescue RegexpError
  help! 'A valid regular expression is required.'
end