create: improve cask token & version generation

This commit is contained in:
EricFromCanada 2021-04-12 16:06:38 -04:00
parent 586d25a522
commit bb26935344
No known key found for this signature in database
GPG Key ID: 179D9CDDDB814168
3 changed files with 23 additions and 6 deletions

View File

@ -79,6 +79,18 @@ module Cask
path.exist? || path.symlink?
end
sig { params(name: String).returns(String) }
def self.token_from(name)
name.downcase
.gsub("+", "-plus-")
.gsub("@", "-at-")
.gsub(/[ _·•]/, "-")
.gsub(/[^\w-]/, "")
.gsub(/--+/, "-")
.delete_prefix("-")
.delete_suffix("-")
end
sig { returns(String) }
def self.error_message_with_suggestions
<<~EOS

View File

@ -85,11 +85,11 @@ module Homebrew
end
def create_cask(args:)
url = args.named.first
raise UsageError, "The `--set-name` flag is required for creating casks." if args.set_name.blank?
if (token = args.set_name).nil?
raise UsageError, "The `--set-name` flag is required for creating casks."
end
url = args.named.first
name = args.set_name
token = Cask::Utils.token_from(args.set_name)
cask_tap = Tap.fetch(args.tap || "homebrew/cask")
raise TapUnavailableError, args.tap unless cask_tap.installed?
@ -101,7 +101,7 @@ module Homebrew
version = if args.set_version
Version.create(args.set_version)
else
Version.detect(url.gsub(token, ""))
Version.detect(url.gsub(token, "").gsub(/x86(_64)?/, ""))
end
interpolated_url, sha256 = if version.null?
@ -125,7 +125,7 @@ module Homebrew
sha256 "#{sha256}"
url "#{interpolated_url}"
name ""
name "#{name}"
desc ""
homepage ""

View File

@ -15,4 +15,9 @@ describe "brew create" do
expect(formula_file).to exist
expect(formula_file.read).to match(%Q(sha256 "#{TESTBALL_SHA256}"))
end
it "generates valid cask tokens" do
t = Cask::Utils.token_from("A Foo@Bar_Baz++!")
expect(t).to eq("a-foo-at-bar-baz-plus-plus")
end
end