rename class and reorganize files

This commit is contained in:
Razvan Azamfirei 2023-07-25 06:38:00 -04:00
parent c64c834d05
commit 33375ae938
No known key found for this signature in database
GPG Key ID: 62E97BFCB12046BD
5 changed files with 130 additions and 125 deletions

View File

@ -0,0 +1,54 @@
# typed: strict
# frozen_string_literal: true
module Homebrew
# Class handling architecture-specific version information.
#
# @api private
class BumpVersionParser
sig { returns(T.nilable(T.any(Version, Cask::DSL::Version))) }
attr_reader :arm, :general, :intel
sig {
params(general: T.nilable(T.any(Version, String)),
arm: T.nilable(T.any(Version, String)),
intel: T.nilable(T.any(Version, String))).void
}
def initialize(general: nil, arm: nil, intel: nil)
@general = T.let(parse_version(general), T.nilable(T.any(Version, Cask::DSL::Version))) if general.present?
@arm = T.let(parse_version(arm), T.nilable(T.any(Version, Cask::DSL::Version))) if arm.present?
@intel = T.let(parse_version(intel), T.nilable(T.any(Version, Cask::DSL::Version))) if intel.present?
return if @general.present?
raise UsageError, "`--version` must not be empty." if arm.blank? && intel.blank?
raise UsageError, "`--version-arm` must not be empty." if arm.blank?
raise UsageError, "`--version-intel` must not be empty." if intel.blank?
end
sig {
params(version: T.any(Version, String))
.returns(T.nilable(T.any(Version, Cask::DSL::Version)))
}
def parse_version(version)
if version.is_a?(Version)
version
elsif version.is_a?(String)
parse_cask_version(version)
end
end
sig { params(version: String).returns(T.nilable(Cask::DSL::Version)) }
def parse_cask_version(version)
if version == "latest"
Cask::DSL::Version.new(:latest)
else
Cask::DSL::Version.new(version)
end
end
sig { returns(T::Boolean) }
def blank?
@general.blank? && @arm.blank? && @intel.blank?
end
end
end

View File

@ -1,10 +1,10 @@
# typed: strict
# frozen_string_literal: true
require "bump_version_parser"
require "cask"
require "cask/download"
require "cli/parser"
require "extend/version-parser"
require "utils/tar"
module Homebrew
@ -83,7 +83,7 @@ module Homebrew
odie "This cask is not in a tap!" if cask.tap.blank?
odie "This cask's tap is not a Git repository!" unless cask.tap.git?
new_version = VersionParser.new(
new_version = BumpVersionParser.new(
general: args.version,
intel: args.version_intel,
arm: args.version_arm,
@ -174,7 +174,7 @@ module Homebrew
params(
cask: Cask::Cask,
new_hash: T.nilable(String),
new_version: VersionParser,
new_version: BumpVersionParser,
replacement_pairs: T::Array[[T.any(Regexp, String), T.any(Regexp, String)]],
).returns(T::Array[[T.any(Regexp, String), T.any(Regexp, String)]])
}
@ -237,7 +237,7 @@ module Homebrew
replacement_pairs
end
sig { params(cask: Cask::Cask, args: Homebrew::CLI::Args, new_version: VersionParser).void }
sig { params(cask: Cask::Cask, args: CLI::Args, new_version: BumpVersionParser).void }
def check_pull_requests(cask, args:, new_version:)
tap_remote_repo = cask.tap.full_name || cask.tap.remote_repo

View File

@ -1,52 +0,0 @@
# typed: strict
# frozen_string_literal: true
# Class handling architecture-specific version information.
#
# @api private
class VersionParser
sig { returns(T.nilable(T.any(Version, Cask::DSL::Version))) }
attr_reader :arm, :general, :intel
sig {
params(general: T.nilable(T.any(Version, String)),
arm: T.nilable(T.any(Version, String)),
intel: T.nilable(T.any(Version, String))).void
}
def initialize(general: nil, arm: nil, intel: nil)
@general = T.let(parse_version(general), T.nilable(T.any(Version, Cask::DSL::Version))) if general.present?
@arm = T.let(parse_version(arm), T.nilable(T.any(Version, Cask::DSL::Version))) if arm.present?
@intel = T.let(parse_version(intel), T.nilable(T.any(Version, Cask::DSL::Version))) if intel.present?
return if @general.present?
raise UsageError, "`--version` must not be empty." if arm.blank? && intel.blank?
raise UsageError, "`--version-arm` must not be empty." if arm.blank?
raise UsageError, "`--version-intel` must not be empty." if intel.blank?
end
sig {
params(version: T.any(Version, String))
.returns(T.nilable(T.any(Version, Cask::DSL::Version)))
}
def parse_version(version)
if version.is_a?(Version)
version
elsif version.is_a?(String)
parse_cask_version(version)
end
end
sig { params(version: String).returns(T.nilable(Cask::DSL::Version)) }
def parse_cask_version(version)
if version == "latest"
Cask::DSL::Version.new(:latest)
else
Cask::DSL::Version.new(version)
end
end
sig { returns(T::Boolean) }
def blank?
@general.blank? && @arm.blank? && @intel.blank?
end
end

View File

@ -0,0 +1,72 @@
# frozen_string_literal: true
require "bump_version_parser"
describe Homebrew::BumpVersionParser do
let(:general_version) { "1.2.3" }
let(:intel_version) { "2.3.4" }
let(:arm_version) { "3.4.5" }
context "when initializing with no versions" do
it "raises a usage error" do
expect do
described_class.new
end.to raise_error(UsageError, "Invalid usage: `--version` must not be empty.")
end
end
context "when initializing with valid versions" do
let(:new_version) { described_class.new(general: general_version, arm: arm_version, intel: intel_version) }
it "correctly parses general version" do
expect(new_version.general).to eq(Cask::DSL::Version.new(general_version.to_s))
end
it "correctly parses arm version" do
expect(new_version.arm).to eq(Cask::DSL::Version.new(arm_version.to_s))
end
it "correctly parses intel version" do
expect(new_version.intel).to eq(Cask::DSL::Version.new(intel_version.to_s))
end
context "when only the intel version is provided" do
it "raises a UsageError" do
expect do
described_class.new(intel: intel_version)
end.to raise_error(UsageError,
"Invalid usage: `--version-arm` must not be empty.")
end
end
context "when only the arm version is provided" do
it "raises a UsageError" do
expect do
described_class.new(arm: arm_version)
end.to raise_error(UsageError,
"Invalid usage: `--version-intel` must not be empty.")
end
end
context "when the version is latest" do
it "returns a version object for latest" do
new_version = described_class.new(general: "latest")
expect(new_version.general.to_s).to eq("latest")
end
context "when the version is not latest" do
it "returns a version object for the given version" do
new_version = described_class.new(general: general_version)
expect(new_version.general.to_s).to eq(general_version)
end
end
end
context "when checking if VersionParser is blank" do
it "returns false if any version is present" do
new_version = described_class.new(general: general_version.to_s, arm: "", intel: "")
expect(new_version.blank?).to be(false)
end
end
end
end

View File

@ -5,73 +5,4 @@ require "dev-cmd/bump-cask-pr"
describe "brew bump-cask-pr" do
it_behaves_like "parseable arguments"
describe Homebrew::VersionParser do
let(:general_version) { "1.2.3" }
let(:intel_version) { "2.3.4" }
let(:arm_version) { "3.4.5" }
context "when initializing with no versions" do
it "raises a usage error" do
expect do
described_class.new
end.to raise_error(UsageError, "Invalid usage: `--version` must not be empty.")
end
end
context "when initializing with valid versions" do
let(:new_version) { described_class.new(general: general_version, arm: arm_version, intel: intel_version) }
it "correctly parses general version" do
expect(new_version.general).to eq(Cask::DSL::Version.new(general_version.to_s))
end
it "correctly parses arm version" do
expect(new_version.arm).to eq(Cask::DSL::Version.new(arm_version.to_s))
end
it "correctly parses intel version" do
expect(new_version.intel).to eq(Cask::DSL::Version.new(intel_version.to_s))
end
context "when only the intel version is provided" do
it "raises a UsageError" do
expect do
described_class.new(intel: intel_version)
end.to raise_error(UsageError,
"Invalid usage: `--version-arm` must not be empty.")
end
end
context "when only the arm version is provided" do
it "raises a UsageError" do
expect do
described_class.new(arm: arm_version)
end.to raise_error(UsageError,
"Invalid usage: `--version-intel` must not be empty.")
end
end
context "when the version is latest" do
it "returns a version object for latest" do
new_version = described_class.new(general: "latest")
expect(new_version.general.to_s).to eq("latest")
end
context "when the version is not latest" do
it "returns a version object for the given version" do
new_version = described_class.new(general: general_version)
expect(new_version.general.to_s).to eq(general_version)
end
end
end
context "when checking if VersionParser is blank" do
it "returns false if any version is present" do
new_version = described_class.new(general: general_version.to_s, arm: "", intel: "")
expect(new_version.blank?).to be(false)
end
end
end
end
end