Class: Homebrew::Bundle::Dsl Private
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Defined Under Namespace
Classes: Entry
Constant Summary collapse
- HOMEBREW_TAP_ARGS_REGEX =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
%r{^([\w-]+)/(homebrew-)?([\w-]+)$}
- HOMEBREW_CORE_FORMULA_REGEX =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
%r{^homebrew/homebrew/([\w+-.@]+)$}i
- HOMEBREW_TAP_FORMULA_REGEX =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
%r{^([\w-]+)/([\w-]+)/([\w+-.@]+)$}
Instance Attribute Summary collapse
- #cask_arguments ⇒ Object readonly private
- #entries ⇒ Object readonly private
- #input ⇒ Object readonly private
Class Method Summary collapse
- .pluralize_dependency(installed_count) ⇒ Object private
- .sanitize_brew_name(name) ⇒ Object private
- .sanitize_cask_name(name) ⇒ Object private
- .sanitize_tap_name(name) ⇒ Object private
Instance Method Summary collapse
- #brew(name, options = {}) ⇒ Object private
- #cask(name, options = {}) ⇒ Object private
- #cask_args(args) ⇒ Object private
- #go(name) ⇒ void private
- #initialize(path) ⇒ Dsl constructor private
A new instance of Dsl.
- #mas(name, options = {}) ⇒ Object private
- #process ⇒ Object private
- #tap(name, clone_target = nil, options = {}) ⇒ Object private
- #vscode(name) ⇒ Object private
- #whalebrew(name) ⇒ Object private
Constructor Details
#initialize(path) ⇒ Dsl
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns a new instance of Dsl.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # File 'bundle/dsl.rb', line 23 def initialize(path) @path = path @input = path.read @entries = [] @cask_arguments = {} begin process # Want to catch all exceptions for e.g. syntax errors. rescue Exception => e # rubocop:disable Lint/RescueException error_msg = "Invalid Brewfile: #{e.}" raise RuntimeError, error_msg, e.backtrace end end |
Instance Attribute Details
#cask_arguments ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
21 22 23 | # File 'bundle/dsl.rb', line 21 def cask_arguments @cask_arguments end |
#entries ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
21 22 23 | # File 'bundle/dsl.rb', line 21 def entries @entries end |
#input ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
21 22 23 | # File 'bundle/dsl.rb', line 21 def input @input end |
Class Method Details
.pluralize_dependency(installed_count) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
134 135 136 | # File 'bundle/dsl.rb', line 134 def self.pluralize_dependency(installed_count) (installed_count == 1) ? "dependency" : "dependencies" end |
.sanitize_brew_name(name) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
106 107 108 109 110 111 112 113 114 115 116 117 118 | # File 'bundle/dsl.rb', line 106 def self.sanitize_brew_name(name) name = name.downcase if name =~ HOMEBREW_CORE_FORMULA_REGEX Regexp.last_match(1) elsif name =~ HOMEBREW_TAP_FORMULA_REGEX user = Regexp.last_match(1) repo = T.must(Regexp.last_match(2)) name = Regexp.last_match(3) "#{user}/#{repo.sub("homebrew-", "")}/#{name}" else name end end |
.sanitize_cask_name(name) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
129 130 131 132 | # File 'bundle/dsl.rb', line 129 def self.sanitize_cask_name(name) name = name.split("/").last if name.include?("/") name.downcase end |
.sanitize_tap_name(name) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
120 121 122 123 124 125 126 127 | # File 'bundle/dsl.rb', line 120 def self.sanitize_tap_name(name) name = name.downcase if name =~ HOMEBREW_TAP_ARGS_REGEX "#{Regexp.last_match(1)}/#{Regexp.last_match(3)}" else name end end |
Instance Method Details
#brew(name, options = {}) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
48 49 50 51 52 53 54 | # File 'bundle/dsl.rb', line 48 def brew(name, = {}) raise "name(#{name.inspect}) should be a String object" unless name.is_a? String raise "options(#{.inspect}) should be a Hash object" unless .is_a? Hash name = Homebrew::Bundle::Dsl.sanitize_brew_name(name) @entries << Entry.new(:brew, name, ) end |
#cask(name, options = {}) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
56 57 58 59 60 61 62 63 64 | # File 'bundle/dsl.rb', line 56 def cask(name, = {}) raise "name(#{name.inspect}) should be a String object" unless name.is_a? String raise "options(#{.inspect}) should be a Hash object" unless .is_a? Hash [:full_name] = name name = Homebrew::Bundle::Dsl.sanitize_cask_name(name) [:args] = @cask_arguments.merge .fetch(:args, {}) @entries << Entry.new(:cask, name, ) end |
#cask_args(args) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
42 43 44 45 46 | # File 'bundle/dsl.rb', line 42 def cask_args(args) raise "cask_args(#{args.inspect}) should be a Hash object" unless args.is_a? Hash @cask_arguments.merge!(args) end |
#go(name) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
87 88 89 | # File 'bundle/dsl.rb', line 87 def go(name) @entries << Entry.new(:go, name) end |
#mas(name, options = {}) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
66 67 68 69 70 71 72 | # File 'bundle/dsl.rb', line 66 def mas(name, = {}) id = [:id] raise "name(#{name.inspect}) should be a String object" unless name.is_a? String raise "options[:id](#{id}) should be an Integer object" unless id.is_a? Integer @entries << Entry.new(:mas, name, id:) end |
#process ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
38 39 40 | # File 'bundle/dsl.rb', line 38 def process instance_eval(@input, @path.to_s) end |
#tap(name, clone_target = nil, options = {}) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
91 92 93 94 95 96 97 98 99 100 | # File 'bundle/dsl.rb', line 91 def tap(name, clone_target = nil, = {}) raise "name(#{name.inspect}) should be a String object" unless name.is_a? String if clone_target && !clone_target.is_a?(String) raise "clone_target(#{clone_target.inspect}) should be nil or a String object" end [:clone_target] = clone_target name = Homebrew::Bundle::Dsl.sanitize_tap_name(name) @entries << Entry.new(:tap, name, ) end |
#vscode(name) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
80 81 82 83 84 | # File 'bundle/dsl.rb', line 80 def vscode(name) raise "name(#{name.inspect}) should be a String object" unless name.is_a? String @entries << Entry.new(:vscode, name) end |
#whalebrew(name) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
74 75 76 77 78 | # File 'bundle/dsl.rb', line 74 def whalebrew(name) raise "name(#{name.inspect}) should be a String object" unless name.is_a? String @entries << Entry.new(:whalebrew, name) end |