Merge pull request #11124 from EricFromCanada/create-cask-token
create: improve cask token & version generation
This commit is contained in:
		
						commit
						4862463aa8
					
				@ -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
 | 
			
		||||
 | 
			
		||||
@ -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 ""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user