Module: PackageResolved

Defined in:
lib/spm_version_updates/package_resolved.rb

Overview

Parsing for ‘Package.resolved` files.

Handles both the v1 format (pins nested under ‘“object”`) and the v2+ format (pins at the top level). This is shared between the Xcode-project source mode and the Swift package manifest source mode.

Defined Under Namespace

Classes: MalformedFileError

Class Method Summary collapse

Class Method Details

.versions_from(path) ⇒ Hash<String, String>

Extract the resolved version (or revision, when no version is pinned) for every pin in a ‘Package.resolved` file.

Parameters:

  • path (String)

    The path to a ‘Package.resolved` file

Returns:

  • (Hash<String, String>)

    normalized repository URL => version or revision

Raises:



28
29
30
31
32
33
34
35
36
37
# File 'lib/spm_version_updates/package_resolved.rb', line 28

def self.versions_from(path)
  contents = load_contents(path)
  pins = contents["pins"] || contents.dig("object", "pins") || []
  pins.to_h { |pin|
    [
      GitOperations.trim_repo_url(pin["location"] || pin["repositoryURL"]),
      pin.dig("state", "version") || pin.dig("state", "revision"),
    ]
  }
end