…lines 1–9 unchanged (9 lines)
10 module DevCmd
11 class Bump < AbstractCommand
12 NEWER_THAN_UPSTREAM_MSG = " (newer than upstream)"
13
14 class VersionBumpInfo < T::Struct
15 const :type, Symbol
16 const :multiple_versions, T::Boolean
17 const :version_name, String
18 const :current_version, BumpVersionParser
19 const :repology_latest, T.any(String, Version)
20 const :new_version, BumpVersionParser
21 const :newer_than_upstream, T::Hash[Symbol, T::Boolean], default: {}
22 const :duplicate_pull_requests, T.nilable(T.any(T::Array[String], String))
…lines 23–315 unchanged (293 lines)
316 is_cask_with_blocks = formula_or_cask.is_a?(Cask::Cask) && formula_or_cask.on_system_blocks_exist?
317 type, version_name = if formula_or_cask.is_a?(Formula)
318 [:formula, "formula version:"]
319 else
320 [:cask, "cask version: "]
321 end
322
323 old_versions = {}
324 new_versions = {}
325
326 repology_latest = repositories.present? ? Repology.latest_version(repositories) : "not found"
327 repology_latest_is_a_version = repology_latest.is_a?(Version)
328
…lines 329–337 unchanged (9 lines)
338 loaded_formula_or_cask = formula_or_cask
339 current_version_value = T.must(loaded_formula_or_cask.stable).version
340 else
341 loaded_formula_or_cask = Cask::CaskLoader.load(formula_or_cask.sourcefile_path)
342 current_version_value = Version.new(loaded_formula_or_cask.version)
343 end
344 formula_or_cask_has_livecheck = loaded_formula_or_cask.livecheck_defined?
345
346 livecheck_latest = livecheck_result(loaded_formula_or_cask)
347 livecheck_latest_is_a_version = livecheck_latest.is_a?(Version)
348
349 new_version_value = if (livecheck_latest_is_a_version &&
350 Livecheck::LivecheckVersion.create(formula_or_cask, livecheck_latest) >=
…lines 351–379 unchanged (29 lines)
380 if new_versions[:arm].present? && new_versions[:arm] == new_versions[:intel]
381 new_versions = { general: new_versions[:arm] }
382 end
383
384 multiple_versions = old_versions.values_at(:arm, :intel).all?(&:present?) ||
385 new_versions.values_at(:arm, :intel).all?(&:present?)
386
387 current_version = BumpVersionParser.new(general: old_versions[:general],
388 arm: old_versions[:arm],
389 intel: old_versions[:intel])
390
391 begin
392 new_version = BumpVersionParser.new(general: new_versions[:general],
…lines 393–431 unchanged (39 lines)
432 retrieve_pull_requests(formula_or_cask, name)
433 end
434 end
435
436 VersionBumpInfo.new(
437 type:,
438 multiple_versions:,
439 version_name:,
440 current_version:,
441 repology_latest:,
442 new_version:,
443 newer_than_upstream:,
444 duplicate_pull_requests:,
…lines 445–454 unchanged (10 lines)
455 ).void
456 }
457 def retrieve_and_display_info_and_open_pr(formula_or_cask, name, repositories, ambiguous_cask: false)
458 version_info = retrieve_versions_by_arch(formula_or_cask:,
459 repositories:,
460 name:)
461
462 current_version = version_info.current_version
463 new_version = version_info.new_version
464 repology_latest = version_info.repology_latest
465
466 versions_equal = (new_version == current_version)
467 all_newer_than_upstream = version_info.newer_than_upstream.all? { |_k, v| v == true }
…lines 468–472 unchanged (5 lines)
473 title_name
474 end
475
476 # Conditionally format output based on type of formula_or_cask
477 current_versions = if version_info.multiple_versions
478 "arm: #{current_version.arm || current_version.general}" \
479 "#{NEWER_THAN_UPSTREAM_MSG if version_info.newer_than_upstream[:arm]}" \
480 "\n " \
481 "intel: #{current_version.intel || current_version.general}" \
482 "#{NEWER_THAN_UPSTREAM_MSG if version_info.newer_than_upstream[:intel]}"
483 else
484 newer_than_upstream_general = version_info.newer_than_upstream[:general]
485 "#{current_version.general}#{NEWER_THAN_UPSTREAM_MSG if newer_than_upstream_general}"
486 end
487 current_versions << " (deprecated)" if formula_or_cask.deprecated?
488
489 new_versions = if version_info.multiple_versions && new_version.arm && new_version.intel
490 "arm: #{new_version.arm}
491 intel: #{new_version.intel}"
492 else
493 new_version.general
…lines 494–624 unchanged (131 lines)