dependabot-swift 0.362.0 → 0.364.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67e00807463f4d247f07a3a309aa428d134b2dc84c7b5ce6eb436936bffa8857
4
- data.tar.gz: 37ed2732d77212af197ce95a2ab634557a73e1970561d51f6aa1ed5ba392858f
3
+ metadata.gz: 363036340485e20146d3722b2d6e5636fa4c0ff007002301ebc72fdda60a9014
4
+ data.tar.gz: 5d938a9377d8900d3d422c76e66d6955787f40d6d39ec7f7c1fd6bc8123d374c
5
5
  SHA512:
6
- metadata.gz: 928902c22e3744273fb6f80fc9e260ecbda4826280d0c2416b40c664f095dbd04b6544f1905fd582da3eeb9d72017c768e7ef45b69f8d05a396a1bbd178621e6
7
- data.tar.gz: 6f4f5092f73a5f7faf8a3a402d71fa5d0d0e161c3bbf784445b357a3f7a02993155d1cb9ca9d2e02cef4a7e194e7e8998718c8724b75d6b8effc3813b906cae3
6
+ metadata.gz: 9bc68ec95a147b232bf55779657fd7ce94e3d957a8f483ba5596bcb1cfd5c950daf1f25718aa1bee501c9cfeff07fb1434ac766b4702d38f2930012ce1d18438
7
+ data.tar.gz: c44d03021e516a1b6e854cfece42f3de2ad37543f4634774447db6943e9ae217e2118212baad943fd18ed475c20d0e9142aca4b81629f17908298ca104260b7e
@@ -1,7 +1,8 @@
1
- # typed: strong
1
+ # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "sorbet-runtime"
5
+ require "dependabot/experiments"
5
6
  require "dependabot/file_fetchers"
6
7
  require "dependabot/file_fetchers/base"
7
8
 
@@ -10,34 +11,79 @@ module Dependabot
10
11
  class FileFetcher < Dependabot::FileFetchers::Base
11
12
  extend T::Sig
12
13
 
14
+ XCODE_SPM_PACKAGE_RESOLVED_PATH = "project.xcworkspace/xcshareddata/swiftpm/Package.resolved"
15
+
13
16
  sig { override.params(filenames: T::Array[String]).returns(T::Boolean) }
14
17
  def self.required_files_in?(filenames)
15
- filenames.include?("Package.swift")
18
+ return true if filenames.include?("Package.swift")
19
+
20
+ if Dependabot::Experiments.enabled?(:enable_swift_xcode_spm)
21
+ return filenames.any? { |f| f.end_with?("Package.resolved") }
22
+ end
23
+
24
+ false
16
25
  end
17
26
 
18
27
  sig { override.returns(String) }
19
28
  def self.required_files_message
20
- "Repo must contain a Package.swift configuration file."
29
+ if Dependabot::Experiments.enabled?(:enable_swift_xcode_spm)
30
+ "Repo must contain a Package.swift configuration file or " \
31
+ "an .xcodeproj directory with a Package.resolved file."
32
+ else
33
+ "Repo must contain a Package.swift configuration file."
34
+ end
21
35
  end
22
36
 
23
37
  sig { override.returns(T::Array[DependencyFile]) }
24
38
  def fetch_files
25
- fetched_files = []
26
- fetched_files << package_manifest
27
- fetched_files << package_resolved if package_resolved
39
+ fetched_files = T.let([], T::Array[DependencyFile])
40
+
41
+ manifest = package_manifest
42
+ if manifest
43
+ fetched_files << manifest
44
+ resolved = package_resolved
45
+ fetched_files << resolved if resolved
46
+ return fetched_files
47
+ end
48
+
49
+ # Base class validates returned files against required_files_in? and raises if needed
50
+ return fetched_files unless Dependabot::Experiments.enabled?(:enable_swift_xcode_spm)
51
+
52
+ fetch_xcode_spm_files(fetched_files)
28
53
  fetched_files
29
54
  end
30
55
 
31
56
  private
32
57
 
33
- sig { returns(Dependabot::DependencyFile) }
58
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
34
59
  def package_manifest
35
- @package_manifest ||= T.let(fetch_file_from_host("Package.swift"), T.nilable(DependencyFile))
60
+ @package_manifest ||= T.let(fetch_file_if_present("Package.swift"), T.nilable(DependencyFile))
36
61
  end
37
62
 
38
63
  sig { returns(T.nilable(DependencyFile)) }
39
64
  def package_resolved
40
- @package_resolved = T.let(fetch_file_if_present("Package.resolved"), T.nilable(DependencyFile))
65
+ @package_resolved ||= T.let(fetch_file_if_present("Package.resolved"), T.nilable(DependencyFile))
66
+ end
67
+
68
+ sig { params(fetched_files: T::Array[DependencyFile]).void }
69
+ def fetch_xcode_spm_files(fetched_files)
70
+ xcodeproj_dirs.each do |xcodeproj_path|
71
+ pbxproj = fetch_support_file(File.join(xcodeproj_path, "project.pbxproj"))
72
+ fetched_files << pbxproj if pbxproj
73
+
74
+ resolved = fetch_file_if_present(File.join(xcodeproj_path, XCODE_SPM_PACKAGE_RESOLVED_PATH))
75
+ fetched_files << resolved if resolved
76
+ end
77
+ end
78
+
79
+ sig { returns(T::Array[String]) }
80
+ def xcodeproj_dirs
81
+ @xcodeproj_dirs ||= T.let(
82
+ repo_contents(dir: ".", raise_errors: false)
83
+ .select { |entry| entry.type == "dir" && entry.name.end_with?(".xcodeproj") }
84
+ .map(&:name),
85
+ T.nilable(T::Array[String])
86
+ )
41
87
  end
42
88
  end
43
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-swift
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.362.0
4
+ version: 0.364.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.362.0
18
+ version: 0.364.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.362.0
25
+ version: 0.364.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -85,14 +85,14 @@ dependencies:
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '1.3'
88
+ version: '2.0'
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '1.3'
95
+ version: '2.0'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: rspec-sorbet
98
98
  requirement: !ruby/object:Gem::Requirement
@@ -266,7 +266,7 @@ licenses:
266
266
  - MIT
267
267
  metadata:
268
268
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
269
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.362.0
269
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.364.0
270
270
  rdoc_options: []
271
271
  require_paths:
272
272
  - lib