Update dogfood
tool to support new format of package.resolved
#800
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What and why?
⚙️ This PR fixes the problem of the recent dogfooding automation failure:
swiftlang/swift-package-manager#3717 introduced a new format of
package.resolved
in Swfit 5.6 toolchain (CHANGELOG). Before, bothdd-sdk-ios
and its dependant projects (Shopist iOS and Datadog iOS app) were usingpackage.resolved
inversion: 1
. Recently, Datadog iOS app's build was upgraded to new toolchain and it usesversion: 2
.This PR enhances
dogfood
script to support both formats, so we can freely use different toolchains in different repositories.V1's
package.resolved
example:V2's
package.resolved
example:How?
The
PackageResolvedFile
now uses one of 2 wrapped types:PackageResolvedContentV1
- for manipulatingversion: 1
structure,PackageResolvedContentV2
- for manipulatingversion: 2
structure.Because dependencies now need to be identified differently, e.g.:
"package": "DatadogSDK"
- in v1"identity" : "dd-sdk-ios"
- in v2I introduced
PackageID
concept, which manages ID for both formats (throughid.v1
andid.v2
).This isolation is to simplify migration once we drop
version: 1
in all projects. To avoid mistakes, I added full tests coverage forPackageResolvedFile
and both formats.Review checklist
Make sure each commit and the PR mention the Issue number or JIRA referenceAdd CHANGELOG entry for user facing change.