Port Homebrew::DevCmd::BumpUnversionedCask

This commit is contained in:
Douglas Eichelberger 2024-03-18 16:49:26 -07:00
parent 1097496a06
commit c70dc040c6
2 changed files with 153 additions and 151 deletions

View File

@ -1,4 +1,4 @@
# typed: true # typed: strict
# frozen_string_literal: true # frozen_string_literal: true
require "timeout" require "timeout"
@ -11,11 +11,11 @@ require "tap"
require "unversioned_cask_checker" require "unversioned_cask_checker"
module Homebrew module Homebrew
extend SystemCommand::Mixin module DevCmd
class BumpUnversionedCask < AbstractCommand
include SystemCommand::Mixin
sig { returns(CLI::Parser) } cmd_args do
def self.bump_unversioned_casks_args
Homebrew::CLI::Parser.new do
description <<~EOS description <<~EOS
Check all casks with unversioned URLs in a given <tap> for updates. Check all casks with unversioned URLs in a given <tap> for updates.
EOS EOS
@ -28,16 +28,13 @@ module Homebrew
named_args [:cask, :tap], min: 1, without_api: true named_args [:cask, :tap], min: 1, without_api: true
end end
end
sig { void }
def self.bump_unversioned_casks
args = bump_unversioned_casks_args.parse
sig { override.void }
def run
Homebrew.install_bundler_gems!(groups: ["bump_unversioned_casks"]) Homebrew.install_bundler_gems!(groups: ["bump_unversioned_casks"])
state_file = if args.state_file.present? state_file = if args.state_file.present?
Pathname(args.state_file).expand_path Pathname(T.must(args.state_file)).expand_path
else else
HOMEBREW_CACHE/"bump_unversioned_casks.json" HOMEBREW_CACHE/"bump_unversioned_casks.json"
end end
@ -75,7 +72,7 @@ module Homebrew
key = cask.full_name key = cask.full_name
new_state = bump_unversioned_cask(cask, state: state.fetch(key, {}), dry_run: args.dry_run?) new_state = bump_unversioned_cask(cask, state: state.fetch(key, {}))
next unless new_state next unless new_state
@ -85,11 +82,13 @@ module Homebrew
end end
end end
private
sig { sig {
params(cask: Cask::Cask, state: T::Hash[String, T.untyped], dry_run: T.nilable(T::Boolean)) params(cask: Cask::Cask, state: T::Hash[String, T.untyped])
.returns(T.nilable(T::Hash[String, T.untyped])) .returns(T.nilable(T::Hash[String, T.untyped]))
} }
def self.bump_unversioned_cask(cask, state:, dry_run:) def bump_unversioned_cask(cask, state:)
ohai "Checking #{cask.full_name}" ohai "Checking #{cask.full_name}"
unversioned_cask_checker = UnversionedCaskChecker.new(cask) unversioned_cask_checker = UnversionedCaskChecker.new(cask)
@ -150,7 +149,7 @@ module Homebrew
cask.sourcefile_path cask.sourcefile_path
] ]
if dry_run if args.dry_run?
bump_cask_pr_args << "--dry-run" bump_cask_pr_args << "--dry-run"
oh1 "Would bump #{cask} from #{cask.version} to #{version}" oh1 "Would bump #{cask} from #{cask.version} to #{version}"
else else
@ -175,3 +174,5 @@ module Homebrew
} }
end end
end end
end
end

View File

@ -1,7 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
require "cmd/shared_examples/args_parse" require "cmd/shared_examples/args_parse"
require "dev-cmd/bump-unversioned-casks"
RSpec.describe "brew bump-unversioned-casks" do RSpec.describe Homebrew::DevCmd::BumpUnversionedCask do
it_behaves_like "parseable arguments" it_behaves_like "parseable arguments", argv: ["foo"]
end end