|
2 | 2 | # frozen_string_literal: true
|
3 | 3 |
|
4 | 4 | require "attrable"
|
| 5 | +require "bundle_version" |
5 | 6 | require "cask/cask_loader"
|
6 | 7 | require "cask/config"
|
7 | 8 | require "cask/dsl"
|
@@ -176,8 +177,20 @@ def installed_caskfile
|
176 | 177 |
|
177 | 178 | sig { returns(T.nilable(String)) }
|
178 | 179 | def installed_version
|
| 180 | + return unless (installed_caskfile = self.installed_caskfile) |
| 181 | + |
179 | 182 | # <caskroom_path>/.metadata/<version>/<timestamp>/Casks/<token>.{rb,json} -> <version>
|
180 |
| - installed_caskfile&.dirname&.dirname&.dirname&.basename&.to_s |
| 183 | + installed_caskfile.dirname.dirname.dirname.basename.to_s |
| 184 | + end |
| 185 | + |
| 186 | + sig { returns(T.nilable(String)) } |
| 187 | + def bundle_short_version |
| 188 | + bundle_version&.short_version |
| 189 | + end |
| 190 | + |
| 191 | + sig { returns(T.nilable(String)) } |
| 192 | + def bundle_long_version |
| 193 | + bundle_version&.version |
181 | 194 | end
|
182 | 195 |
|
183 | 196 | def config_path
|
@@ -326,6 +339,8 @@ def to_h
|
326 | 339 | "version" => version,
|
327 | 340 | "installed" => installed_version,
|
328 | 341 | "installed_time" => install_time&.to_i,
|
| 342 | + "bundle_version" => bundle_long_version, |
| 343 | + "bundle_short_version" => bundle_short_version, |
329 | 344 | "outdated" => outdated?,
|
330 | 345 | "sha256" => sha256,
|
331 | 346 | "artifacts" => artifacts_list,
|
@@ -386,6 +401,14 @@ def to_hash_with_variations
|
386 | 401 |
|
387 | 402 | private
|
388 | 403 |
|
| 404 | + sig { returns(T.nilable(Homebrew::BundleVersion)) } |
| 405 | + def bundle_version |
| 406 | + @bundle_version ||= if (bundle = artifacts.find { |a| a.is_a?(Artifact::App) }&.target) && |
| 407 | + (plist = Pathname("#{bundle}/Contents/Info.plist")) && plist.exist? |
| 408 | + Homebrew::BundleVersion.from_info_plist(plist) |
| 409 | + end |
| 410 | + end |
| 411 | + |
389 | 412 | def api_to_local_hash(hash)
|
390 | 413 | hash["token"] = token
|
391 | 414 | hash["installed"] = installed_version
|
|
0 commit comments