diff --git a/Library/Homebrew/cask/lib/hbc/dsl.rb b/Library/Homebrew/cask/lib/hbc/dsl.rb index 83c0bf1fb3..69ade9a861 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl.rb @@ -64,6 +64,7 @@ module Hbc :depends_on, :gpg, :homepage, + :language, :license, :name, :sha256, @@ -98,6 +99,31 @@ module Hbc @homepage ||= homepage end + def language(*args, &block) + @language ||= {} + + if !args.empty? && block_given? + args.each do |arg| + MacOS.languages.each_with_index do |l, index| + string_or_regex = arg == :default ? %r{^en} : arg + next unless l.match(string_or_regex) + next unless @language[:level].nil? || @language[:level] > index + @language = { + block: block, + level: index, + } + end + end + + if args.include?(:default) + # :default has to be the last language block in order to assign return value of the selected `language` block to `@language` + @language = @language[:block].call + end + else + @language + end + end + def url(*args, &block) url_given = !args.empty? || block_given? return @url unless url_given diff --git a/Library/Homebrew/cask/lib/hbc/dsl/base.rb b/Library/Homebrew/cask/lib/hbc/dsl/base.rb index ccf93dae9a..20a3cec619 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl/base.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl/base.rb @@ -8,7 +8,7 @@ module Hbc @command = command end - def_delegators :@cask, :token, :version, :caskroom_path, :staged_path, :appdir + def_delegators :@cask, :token, :version, :caskroom_path, :staged_path, :appdir, :language def system_command(executable, options = {}) @command.run!(executable, options)