create: improve cask token & version generation
This commit is contained in:
parent
586d25a522
commit
bb26935344
@ -79,6 +79,18 @@ module Cask
|
|||||||
path.exist? || path.symlink?
|
path.exist? || path.symlink?
|
||||||
end
|
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) }
|
sig { returns(String) }
|
||||||
def self.error_message_with_suggestions
|
def self.error_message_with_suggestions
|
||||||
<<~EOS
|
<<~EOS
|
||||||
|
@ -85,11 +85,11 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create_cask(args:)
|
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?
|
url = args.named.first
|
||||||
raise UsageError, "The `--set-name` flag is required for creating casks."
|
name = args.set_name
|
||||||
end
|
token = Cask::Utils.token_from(args.set_name)
|
||||||
|
|
||||||
cask_tap = Tap.fetch(args.tap || "homebrew/cask")
|
cask_tap = Tap.fetch(args.tap || "homebrew/cask")
|
||||||
raise TapUnavailableError, args.tap unless cask_tap.installed?
|
raise TapUnavailableError, args.tap unless cask_tap.installed?
|
||||||
@ -101,7 +101,7 @@ module Homebrew
|
|||||||
version = if args.set_version
|
version = if args.set_version
|
||||||
Version.create(args.set_version)
|
Version.create(args.set_version)
|
||||||
else
|
else
|
||||||
Version.detect(url.gsub(token, ""))
|
Version.detect(url.gsub(token, "").gsub(/x86(_64)?/, ""))
|
||||||
end
|
end
|
||||||
|
|
||||||
interpolated_url, sha256 = if version.null?
|
interpolated_url, sha256 = if version.null?
|
||||||
@ -125,7 +125,7 @@ module Homebrew
|
|||||||
sha256 "#{sha256}"
|
sha256 "#{sha256}"
|
||||||
|
|
||||||
url "#{interpolated_url}"
|
url "#{interpolated_url}"
|
||||||
name ""
|
name "#{name}"
|
||||||
desc ""
|
desc ""
|
||||||
homepage ""
|
homepage ""
|
||||||
|
|
||||||
|
@ -15,4 +15,9 @@ describe "brew create" do
|
|||||||
expect(formula_file).to exist
|
expect(formula_file).to exist
|
||||||
expect(formula_file.read).to match(%Q(sha256 "#{TESTBALL_SHA256}"))
|
expect(formula_file.read).to match(%Q(sha256 "#{TESTBALL_SHA256}"))
|
||||||
end
|
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user