Class: Dependabot::Swift::FileFetcher

Inherits:
FileFetchers::Base
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/swift/file_fetcher.rb

Constant Summary collapse

XCODEPROJ_SUFFIX =
".xcodeproj"
XCWORKSPACE_SUFFIX =
".xcworkspace"
XCODE_SPM_PACKAGE_RESOLVED_PATH =
"project.xcworkspace/xcshareddata/swiftpm/Package.resolved"
XCWORKSPACE_PACKAGE_RESOLVED_PATH =
"xcshareddata/swiftpm/Package.resolved"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.required_files_in?(filenames) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
# File 'lib/dependabot/swift/file_fetcher.rb', line 20

def self.required_files_in?(filenames)
  return true if filenames.include?("Package.swift")

  filenames.any? { |f| XcodeFileHelpers.xcode_resolved_path?(f) }
end

.required_files_messageObject



27
28
29
30
# File 'lib/dependabot/swift/file_fetcher.rb', line 27

def self.required_files_message
  "Repo must contain a Package.swift configuration file or " \
    "an .xcodeproj/.xcworkspace directory with a Package.resolved file."
end

Instance Method Details

#fetch_filesObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/dependabot/swift/file_fetcher.rb', line 33

def fetch_files
  fetched_files = T.let([], T::Array[DependencyFile])

  manifest = package_manifest
  if manifest
    fetched_files << manifest
    resolved = package_resolved
    fetched_files << resolved if resolved
    return fetched_files
  end

  # Base class validates returned files against required_files_in? and raises if needed
  fetch_xcode_spm_files(fetched_files)
  fetched_files
end