Class: Dependabot::Vcpkg::Package::VersionsDatabase
- Inherits:
-
Object
- Object
- Dependabot::Vcpkg::Package::VersionsDatabase
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/vcpkg/package/versions_database.rb
Overview
Reads the vcpkg registry's versions database from the checkout the updater image ships.
versions/<letter>-/<port>.json lists every published version of a port, newest first,
along with the scheme it was published under. versions/baseline.json at a given commit
gives the version floor that commit sets for every port.
See https://learn.microsoft.com/vcpkg/users/versioning.concepts#acquiring-port-versions
Defined Under Namespace
Classes: PortVersion
Constant Summary collapse
- COMMIT_HEADER_PATTERN =
/\A[0-9a-f]{40}\t(?<date>\S+)\z/- ADDED_GIT_TREE_PATTERN =
/\A\+\s*"git-tree":\s*"(?<git_tree>[0-9a-f]{40})"/
Instance Attribute Summary collapse
-
#repository_path ⇒ Object
readonly
Returns the value of attribute repository_path.
Instance Method Summary collapse
- #ancestor?(ancestor:, descendant:) ⇒ Boolean
- #available? ⇒ Boolean
- #baseline_version_for(port:, ref:) ⇒ Object
- #baseline_versions(ref) ⇒ Object
- #commit_sha_for(ref) ⇒ Object
-
#initialize(repository_path: Vcpkg.repository_path) ⇒ VersionsDatabase
constructor
A new instance of VersionsDatabase.
- #registry_ref ⇒ Object
- #release_dates_for(port) ⇒ Object
- #release_tags ⇒ Object
- #versions_for(port) ⇒ Object
Constructor Details
#initialize(repository_path: Vcpkg.repository_path) ⇒ VersionsDatabase
Returns a new instance of VersionsDatabase.
34 35 36 37 38 39 40 41 42 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 34 def initialize(repository_path: Vcpkg.repository_path) @repository_path = repository_path @port_versions = T.let({}, T::Hash[String, T::Array[PortVersion]]) @baselines = T.let({}, T::Hash[String, T::Hash[String, Dependabot::Vcpkg::Version]]) @release_dates = T.let({}, T::Hash[String, T::Hash[String, Time]]) @release_tags = T.let(nil, T.nilable(T::Array[String])) @registry_ref = T.let(nil, T.nilable(String)) @fetched = T.let(false, T::Boolean) end |
Instance Attribute Details
#repository_path ⇒ Object (readonly)
Returns the value of attribute repository_path.
45 46 47 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 45 def repository_path @repository_path end |
Instance Method Details
#ancestor?(ancestor:, descendant:) ⇒ Boolean
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 90 def ancestor?(ancestor:, descendant:) fetch_registry return false unless available? Dependabot::SharedHelpers.run_shell_command( "git merge-base --is-ancestor #{ancestor} #{descendant}", cwd: repository_path ) true rescue Dependabot::SharedHelpers::HelperSubprocessFailed false end |
#available? ⇒ Boolean
48 49 50 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 48 def available? File.directory?(File.join(repository_path, ".git")) end |
#baseline_version_for(port:, ref:) ⇒ Object
60 61 62 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 60 def baseline_version_for(port:, ref:) baseline_versions(ref)[port] end |
#baseline_versions(ref) ⇒ Object
65 66 67 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 65 def baseline_versions(ref) @baselines[ref] ||= read_baseline_versions(ref) end |
#commit_sha_for(ref) ⇒ Object
83 84 85 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 83 def commit_sha_for(ref) run_git("rev-list", "-n", "1", ref)&.strip end |
#registry_ref ⇒ Object
106 107 108 109 110 111 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 106 def registry_ref @registry_ref ||= begin remote_ref = "origin/#{VCPKG_DEFAULT_BASELINE_DEFAULT_BRANCH}" ref_exists?(remote_ref) ? remote_ref : "HEAD" end end |
#release_dates_for(port) ⇒ Object
78 79 80 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 78 def release_dates_for(port) @release_dates[port] ||= read_release_dates(port) end |
#release_tags ⇒ Object
71 72 73 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 71 def @release_tags ||= end |
#versions_for(port) ⇒ Object
54 55 56 |
# File 'lib/dependabot/vcpkg/package/versions_database.rb', line 54 def versions_for(port) @port_versions[port] ||= read_port_versions(port) end |