Class: Cask::DSL Private

Inherits:
Object show all
Includes:
OS::Mac::Cask::DSL, OnSystem::MacOSAndLinux, Utils::Output::Mixin, Utils::Path
Defined in:
cask/dsl.rb,
cask/dsl/base.rb,
cask/dsl/rename.rb,
cask/dsl/caveats.rb,
cask/dsl/version.rb,
cask/dsl/container.rb,
cask/dsl/preflight.rb,
cask/dsl/depends_on.rb,
cask/dsl/postflight.rb,
cask/dsl/conflicts_with.rb,
cask/dsl/uninstall_preflight.rb,
cask/dsl/uninstall_postflight.rb,
sorbet/rbi/dsl/cask/dsl.rbi

Overview

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.

Class representing the domain-specific language used for casks.

Defined Under Namespace

Classes: Base, Caveats, ConflictsWith, Container, DependsOn, Postflight, Preflight, Rename, UninstallPostflight, UninstallPreflight, Version

Constant Summary collapse

ORDINARY_ARTIFACT_CLASSES =

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.

[
  Artifact::Installer,
  Artifact::App,
  Artifact::AppImage,
  Artifact::Artifact,
  Artifact::AudioUnitPlugin,
  Artifact::Binary,
  Artifact::CommandWrapper,
  Artifact::Colorpicker,
  Artifact::Dictionary,
  Artifact::Font,
  Artifact::GeneratedScript,
  Artifact::InputMethod,
  Artifact::InternetPlugin,
  Artifact::KeyboardLayout,
  Artifact::Manpage,
  Artifact::Pkg,
  Artifact::Prefpane,
  Artifact::Qlplugin,
  Artifact::Mdimporter,
  Artifact::ScreenSaver,
  Artifact::Service,
  Artifact::StageOnly,
  Artifact::Suite,
  Artifact::VstPlugin,
  Artifact::Vst3Plugin,
  Artifact::ZshCompletion,
  Artifact::FishCompletion,
  Artifact::BashCompletion,
  Artifact::GeneratedCompletion,
  Artifact::Uninstall,
  Artifact::Zap,
].freeze
ACTIVATABLE_ARTIFACT_CLASSES =

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.

T.let(
  (ORDINARY_ARTIFACT_CLASSES - [Artifact::StageOnly]).freeze,
  T::Array[T.class_of(Artifact::AbstractArtifact)],
)
ARTIFACT_BLOCK_CLASSES =

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.

[
  Artifact::PreflightBlock,
  Artifact::PostflightBlock,
].freeze
INSTALL_STEP_ARTIFACT_CLASSES =

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.

[
  Artifact::PreflightSteps,
  Artifact::PostflightSteps,
  Artifact::UninstallPreflightSteps,
  Artifact::UninstallPostflightSteps,
].freeze
ARTIFACT_DSL_METHODS =

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.

T.let(Set.new([
  *ORDINARY_ARTIFACT_CLASSES.map(&:dsl_key),
  *ARTIFACT_BLOCK_CLASSES.flat_map { |klass| [klass.dsl_key, klass.uninstall_dsl_key] },
  *INSTALL_STEP_ARTIFACT_CLASSES.map(&:dsl_key),
]).freeze, T::Set[Symbol])
DSL_METHODS =

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.

T.let(Set.new([
  :arch,
  :artifacts,
  :auto_updates,
  :caveats,
  :conflicts_with,
  :container,
  :desc,
  :depends_on,
  :homepage,
  :homepage_browsed,
  :language,
  :name,
  :os,
  :rename,
  :sha256,
  :staged_path,
  :url,
  :version,
  :appdir,
  :deprecate!,
  :deprecated?,
  :deprecation_date,
  :deprecation_reason,
  :deprecation_replacement_cask,
  :deprecation_replacement_formula,
  :deprecate_args,
  :disable!,
  :disabled?,
  :disable_date,
  :disable_reason,
  :disable_replacement_cask,
  :disable_replacement_formula,
  :disable_args,
  :livecheck,
  :livecheck_defined?,
  :no_autobump!,
  :autobump?,
  :no_autobump_message,
  :on_system_blocks_exist?,
  :on_os_blocks_exist?,
  :on_system_block_min_os,
  :depends_on_set_in_block?,
  *ARTIFACT_DSL_METHODS,
]).freeze, T::Set[Symbol])

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from OnSystem::MacOSAndLinux

included

Methods included from Utils::Path

formula_installed_prefixes, formula_opt_bin_env, formula_opt_bin_path, install_info, loadable_package_path?, uninstall_info

Methods included from Utils::Path::Helpers

#child_of?, #cp_path_sub, #ensure_child_of!, #ensure_writable, #resolved_path, #resolved_path_exists?, #rmdir_if_possible, #text_executable?

Methods included from Utils::Path::FormulaHelpers

#formula_any_version_installed?, #formula_opt_bin, #formula_opt_include, #formula_opt_lib, #formula_opt_libexec, #formula_opt_prefix

Methods included from Utils::Output::Mixin

#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_cannot_install, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_unmarked, #pretty_upgradable, #pretty_warning

Constructor Details

#initialize(cask) ⇒ 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.

Parameters:



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'cask/dsl.rb', line 193

def initialize(cask)
  # NOTE: `:"@#{stanza}"` variables set by `set_unique_stanza` must be
  # initialized to `nil`.
  @arch = T.let(nil, T.nilable(String))
  @arch_set_in_block = T.let(false, T::Boolean)
  @artifacts = T.let(ArtifactSet.new, ArtifactSet)
  @auto_updates = T.let(nil, T.nilable(T::Boolean))
  @auto_updates_set_in_block = T.let(false, T::Boolean)
  @autobump = T.let(true, T::Boolean)
  @called_in_on_system_block = T.let(false, T::Boolean)
  @called_in_on_os_block = T.let(false, T::Boolean)
  @cask = cask
  @caveats = T.let(DSL::Caveats.new(cask), DSL::Caveats)
  @conflicts_with = T.let(nil, T.nilable(DSL::ConflictsWith))
  @container = T.let(nil, T.nilable(DSL::Container))
  @container_set_in_block = T.let(false, T::Boolean)
  @depends_on = T.let(DSL::DependsOn.new, DSL::DependsOn)
  @depends_on_set_in_block = T.let(false, T::Boolean)
  @deprecated = T.let(false, T::Boolean)
  @deprecation_date = T.let(nil, T.nilable(Date))
  @deprecation_reason = T.let(nil, T.nilable(T.any(String, Symbol)))
  @deprecation_replacement_cask = T.let(nil, T.nilable(String))
  @deprecation_replacement_formula = T.let(nil, T.nilable(String))
  @deprecate_args = T.let(nil, T.nilable(T::Hash[Symbol, T.nilable(T.any(String, Symbol))]))
  @desc = T.let(nil, T.nilable(String))
  @desc_set_in_block = T.let(false, T::Boolean)
  @disable_date = T.let(nil, T.nilable(Date))
  @disable_reason = T.let(nil, T.nilable(T.any(String, Symbol)))
  @disable_replacement_cask = T.let(nil, T.nilable(String))
  @disable_replacement_formula = T.let(nil, T.nilable(String))
  @disable_args = T.let(nil, T.nilable(T::Hash[Symbol, T.nilable(T.any(String, Symbol))]))
  @disabled = T.let(false, T::Boolean)
  @homepage = T.let(nil, T.nilable(String))
  @homepage_browsed = T.let(nil, T.nilable(Date))
  @homepage_set_in_block = T.let(false, T::Boolean)
  @language_blocks = T.let({}, T::Hash[T::Array[String], Proc])
  @language_eval = T.let(nil, T.nilable(String))
  @livecheck = T.let(Livecheck.new(cask), Livecheck)
  @livecheck_defined = T.let(false, T::Boolean)
  @name = T.let([], T::Array[String])
  @no_autobump_defined = T.let(false, T::Boolean)
  @no_autobump_message = T.let(nil, T.nilable(T.any(String, Symbol)))
  @on_system_blocks_exist = T.let(false, T::Boolean)
  @on_os_blocks_exist = T.let(false, T::Boolean)
  @on_system_block_min_os = T.let(nil, T.nilable(MacOSVersion))
  @os = T.let(nil, T.nilable(String))
  @os_set_in_block = T.let(false, T::Boolean)
  @rename = T.let([], T::Array[DSL::Rename])
  @sha256 = T.let(nil, T.nilable(T.any(Checksum, Symbol)))
  @sha256_set_in_block = T.let(false, T::Boolean)
  @staged_path = T.let(nil, T.nilable(Pathname))
  @token = T.let(cask.token, String)
  @url = T.let(nil, T.nilable(URL))
  @url_set_in_block = T.let(false, T::Boolean)
  @version = T.let(nil, T.nilable(DSL::Version))
  @version_set_in_block = T.let(false, T::Boolean)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *_args) ⇒ T.noreturn

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.

Parameters:

  • method (Symbol)
  • _args (T.anything)

Returns:

  • (T.noreturn)

Raises:

  • (NoMethodError)


881
882
883
# File 'cask/dsl.rb', line 881

def method_missing(method, *_args)
  raise NoMethodError, "undefined method '#{method}' for Cask '#{token}'"
end

Instance Attribute Details

#artifactsArtifactSet (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.

Returns:



154
155
156
# File 'cask/dsl.rb', line 154

def artifacts
  @artifacts
end

#caskCask (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.

Returns:



145
146
147
# File 'cask/dsl.rb', line 145

def cask
  @cask
end

#deprecate_argsHash{Symbol => String, Symbol, nil}? (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.

Returns:



169
170
171
# File 'cask/dsl.rb', line 169

def deprecate_args
  @deprecate_args
end

#deprecation_dateDate? (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.

Returns:

  • (Date, nil)


157
158
159
# File 'cask/dsl.rb', line 157

def deprecation_date
  @deprecation_date
end

#deprecation_reasonString, ... (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.

Returns:



160
161
162
# File 'cask/dsl.rb', line 160

def deprecation_reason
  @deprecation_reason
end

#deprecation_replacement_caskString? (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.

Returns:



163
164
165
# File 'cask/dsl.rb', line 163

def deprecation_replacement_cask
  @deprecation_replacement_cask
end

#deprecation_replacement_formulaString? (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.

Returns:



166
167
168
# File 'cask/dsl.rb', line 166

def deprecation_replacement_formula
  @deprecation_replacement_formula
end

#disable_argsHash{Symbol => String, Symbol, nil}? (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.

Returns:



187
188
189
# File 'cask/dsl.rb', line 187

def disable_args
  @disable_args
end

#disable_dateDate? (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.

Returns:

  • (Date, nil)


172
173
174
# File 'cask/dsl.rb', line 172

def disable_date
  @disable_date
end

#disable_reasonString, ... (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.

Returns:



175
176
177
# File 'cask/dsl.rb', line 175

def disable_reason
  @disable_reason
end

#disable_replacement_caskString? (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.

Returns:



178
179
180
# File 'cask/dsl.rb', line 178

def disable_replacement_cask
  @disable_replacement_cask
end

#disable_replacement_formulaString? (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.

Returns:



181
182
183
# File 'cask/dsl.rb', line 181

def disable_replacement_formula
  @disable_replacement_formula
end

#homepage_browsedDate? (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.

Returns:

  • (Date, nil)


184
185
186
# File 'cask/dsl.rb', line 184

def homepage_browsed
  @homepage_browsed
end

#no_autobump_messageString, ... (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.

Returns:



151
152
153
# File 'cask/dsl.rb', line 151

def no_autobump_message
  @no_autobump_message
end

#on_system_block_min_osMacOSVersion? (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.

Returns:



190
191
192
# File 'cask/dsl.rb', line 190

def on_system_block_min_os
  @on_system_block_min_os
end

#tokenString (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.

Returns:



148
149
150
# File 'cask/dsl.rb', line 148

def token
  @token
end

Instance Method Details

#app(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


10
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 10

def app(*args, **kwargs); end

#app_image(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


13
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 13

def app_image(*args, **kwargs); end

#appdirPathname, String

The directory apps are installed into.

Returns:



899
900
901
902
903
# File 'cask/dsl.rb', line 899

def appdir
  return HOMEBREW_CASK_APPDIR_PLACEHOLDER if Cask.generating_hash?

  cask.config.appdir
end

#arch(arm: nil, intel: nil) ⇒ String?

Sets the cask's architecture strings.

Example

arch arm: "darwin-arm64", intel: "darwin"

Parameters:

  • arm (String, nil) (defaults to: nil)
  • intel (String, nil) (defaults to: nil)

Returns:



587
588
589
590
591
592
593
594
595
# File 'cask/dsl.rb', line 587

def arch(arm: nil, intel: nil)
  should_return = arm.nil? && intel.nil?

  set_unique_stanza(:arch, should_return) do
    @on_system_blocks_exist = true

    on_arch_conditional(arm:, intel:)
  end
end

#artifact(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


16
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 16

def artifact(*args, **kwargs); end

#audio_unit_plugin(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


19
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 19

def audio_unit_plugin(*args, **kwargs); end

#auto_updates(auto_updates = nil) ⇒ Boolean?

Asserts that the cask artifacts auto-update.

Parameters:

  • auto_updates (Boolean, nil) (defaults to: nil)

Returns:

  • (Boolean, nil)


717
718
719
# File 'cask/dsl.rb', line 717

def auto_updates(auto_updates = nil)
  set_unique_stanza(:auto_updates, auto_updates.nil?) { auto_updates }
end

#autobump?Boolean

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.

Is the cask in autobump list?

Returns:

  • (Boolean)


753
754
755
# File 'cask/dsl.rb', line 753

def autobump?
  @autobump == true
end

#bash_completion(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


22
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 22

def bash_completion(*args, **kwargs); end

#binary(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


25
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 25

def binary(*args, **kwargs); end

#caskroom_pathPathname

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:



673
674
675
# File 'cask/dsl.rb', line 673

def caskroom_path
  cask.caskroom_path
end

#caveats(*strings, &block) ⇒ String, DSL::Caveats

Provide the user with cask-specific information at install time.

Parameters:

Returns:



697
698
699
700
701
702
703
704
705
706
707
708
# File 'cask/dsl.rb', line 697

def caveats(*strings, &block)
  if block
    @caveats.eval_caveats(&block)
  elsif strings.any?
    strings.each do |string|
      @caveats.eval_caveats { string }
    end
  else
    return @caveats.to_s
  end
  @caveats
end

#caveats_objectDSL::Caveats

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:



711
# File 'cask/dsl.rb', line 711

def caveats_object = @caveats

#colorpicker(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


28
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 28

def colorpicker(*args, **kwargs); end

#command_wrapper(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


31
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 31

def command_wrapper(*args, **kwargs); end

#conflicts_with(**kwargs) ⇒ DSL::ConflictsWith?

Note:

Multiple conflicts_with stanzas can be specified; they are merged.

Declare conflicts that keep a cask from installing or working correctly.

Parameters:

  • kwargs (T.anything)

Returns:



661
662
663
664
665
666
667
668
669
670
# File 'cask/dsl.rb', line 661

def conflicts_with(**kwargs)
  return @conflicts_with if kwargs.empty?

  new_conflicts = DSL::ConflictsWith.new(**kwargs)
  @conflicts_with = @conflicts_with&.merge!(new_conflicts) || new_conflicts
rescue CaskInvalidError
  raise
rescue => e
  raise CaskInvalidError.new(cask, "'conflicts_with' stanza failed with: #{e}")
end

#container(nested: nil, type: nil) ⇒ DSL::Container?

Sets the cask's container type or nested container path.

Examples

The container is a nested disk image:

container nested: "orca-#{version}.dmg"

The container should not be unarchived:

container type: :naked

Parameters:

  • nested (String, nil) (defaults to: nil)
  • type (Symbol, nil) (defaults to: nil)

Returns:



472
473
474
475
476
# File 'cask/dsl.rb', line 472

def container(nested: nil, type: nil)
  set_unique_stanza(:container, nested.nil? && type.nil?) do
    DSL::Container.new(nested:, type:)
  end
end

#default_language_groupArray<String>?

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:



420
421
422
423
424
425
# File 'cask/dsl.rb', line 420

def default_language_group
  default_language_block = @language_blocks.default
  return if default_language_block.nil?

  @language_blocks.key(default_language_block)
end

#depends_on(arg = nil, **kwargs) ⇒ DSL::DependsOn

Note:

Multiple dependencies can be specified.

Declare dependencies and requirements for a cask.

Parameters:

  • arg (Symbol, nil) (defaults to: nil)
  • kwargs (T.untyped)

Returns:



629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# File 'cask/dsl.rb', line 629

def depends_on(arg = nil, **kwargs)
  @depends_on_set_in_block = true if @called_in_on_system_block
  if arg == :macos
    if kwargs.key?(:macos) || kwargs.key?(:maximum_macos)
      raise CaskInvalidError.new(cask, "`depends_on :macos` cannot be combined with another macOS `depends_on`")
    end

    kwargs[:macos] = :any
  elsif arg == :linux
    kwargs[:linux] = :any
  elsif arg
    raise CaskInvalidError.new(cask, "invalid 'depends_on' value: #{arg.inspect}")
  end
  return @depends_on if kwargs.empty?

  begin
    # Only OS blocks scope a dependency to one OS: `on_arm`/`on_intel`
    # blocks are evaluated on every OS, so a macOS dependency inside one
    # applies everywhere and marks the cask macOS-only.
    @depends_on.load(kwargs, set_in_block: @called_in_on_system_block, os_scoped: @called_in_on_os_block)
  rescue RuntimeError => e
    raise CaskInvalidError.new(cask, e)
  end
  @depends_on
end

#depends_on_set_in_block?Boolean

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:

  • (Boolean)


252
# File 'cask/dsl.rb', line 252

def depends_on_set_in_block? = @depends_on_set_in_block

#deprecate!(date:, because:, replacement: nil, replacement_formula: nil, replacement_cask: nil) ⇒ void

Note:

A warning will be shown when trying to install this cask.

This method returns an undefined value.

Declare that a cask is no longer functional or supported.

Parameters:

  • date (String)
  • because (String, Symbol)
  • replacement (String, nil) (defaults to: nil)
  • replacement_formula (String, nil) (defaults to: nil)
  • replacement_cask (String, nil) (defaults to: nil)


771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
# File 'cask/dsl.rb', line 771

def deprecate!(date:, because:, replacement: nil, replacement_formula: nil, replacement_cask: nil)
  if [replacement, replacement_formula, replacement_cask].filter_map(&:presence).length > 1
    raise ArgumentError, "more than one of replacement, replacement_formula and/or replacement_cask specified!"
  end

  if replacement
    odeprecated(
      "deprecate!(:replacement)",
      "deprecate!(:replacement_formula) or deprecate!(:replacement_cask)",
    )
  end

  @deprecate_args = { date:, because:, replacement_formula:, replacement_cask: }

  @deprecation_date = Date.parse(date)
  return if @deprecation_date > Date.today

  @deprecation_reason = because
  @deprecation_replacement_formula = replacement_formula.presence || replacement
  @deprecation_replacement_cask = replacement_cask.presence || replacement
  @deprecated = true
end

#deprecated?Boolean

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:

  • (Boolean)


255
# File 'cask/dsl.rb', line 255

def deprecated? = @deprecated

#desc(description = nil) ⇒ String?

Describes the cask.

Example

desc "Open-source code editor"

Parameters:

  • description (String, nil) (defaults to: nil)

Returns:



297
298
299
# File 'cask/dsl.rb', line 297

def desc(description = nil)
  set_unique_stanza(:desc, description.nil?) { description }
end

#dictionary(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


34
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 34

def dictionary(*args, **kwargs); end

#disable!(date:, because:, replacement: nil, replacement_formula: nil, replacement_cask: nil) ⇒ void

Note:

An error will be thrown when trying to install this cask.

This method returns an undefined value.

Declare that a cask is no longer functional or supported.

Parameters:

  • date (String)
  • because (String, Symbol)
  • replacement (String, nil) (defaults to: nil)
  • replacement_formula (String, nil) (defaults to: nil)
  • replacement_cask (String, nil) (defaults to: nil)


808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
# File 'cask/dsl.rb', line 808

def disable!(date:, because:, replacement: nil, replacement_formula: nil, replacement_cask: nil)
  if [replacement, replacement_formula, replacement_cask].filter_map(&:presence).length > 1
    raise ArgumentError, "more than one of replacement, replacement_formula and/or replacement_cask specified!"
  end

  # odeprecate: remove this remapping when the :unsigned reason is removed
  because = :fails_gatekeeper_check if because == :unsigned

  if replacement
    odeprecated(
      "disable!(:replacement)",
      "disable!(:replacement_formula) or disable!(:replacement_cask)",
    )
  end

  @disable_args = { date:, because:, replacement_formula:, replacement_cask: }

  @disable_date = Date.parse(date)

  if @disable_date > Date.today
    @deprecation_reason = because
    @deprecation_replacement_formula = replacement_formula.presence || replacement
    @deprecation_replacement_cask = replacement_cask.presence || replacement
    @deprecated = true
    return
  end

  @disable_reason = because
  @disable_replacement_formula = replacement_formula.presence || replacement
  @disable_replacement_cask = replacement_cask.presence || replacement
  @disabled = true
end

#disabled?Boolean

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:

  • (Boolean)


258
# File 'cask/dsl.rb', line 258

def disabled? = @disabled

#fish_completion(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


37
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 37

def fish_completion(*args, **kwargs); end

#font(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


40
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 40

def font(*args, **kwargs); end

#generate_completions_from_executable(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


43
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 43

def generate_completions_from_executable(*args, **kwargs); end

#generated_script(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


46
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 46

def generated_script(*args, **kwargs); end

#homepage(homepage = nil, browsed: nil) ⇒ String?

Sets the cask's homepage.

Example

homepage "https://code.visualstudio.com/", browsed: "2026-07-26"

browsed is the date when a human last checked the homepage in a browser. Automated homepage availability audits are skipped for one year.

Parameters:

  • homepage (String, nil) (defaults to: nil)
  • browsed (String, nil) (defaults to: nil)

Returns:

Raises:



344
345
346
347
348
349
350
351
# File 'cask/dsl.rb', line 344

def homepage(homepage = nil, browsed: nil)
  raise CaskInvalidError.new(cask, "`browsed` requires a homepage URL") if homepage.nil? && browsed

  set_unique_stanza(:homepage, homepage.nil?) do
    @homepage_browsed = Date.parse(browsed) if browsed
    homepage
  end
end

#input_method(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


49
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 49

def input_method(*args, **kwargs); end

#installer(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


52
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 52

def installer(*args, **kwargs); end

#internet_plugin(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


55
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 55

def internet_plugin(*args, **kwargs); end

#keyboard_layout(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


58
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 58

def keyboard_layout(*args, **kwargs); end

#language(*args, default: false, &block) ⇒ String?

Specifies language-specific values for the cask.

Parameters:

  • args (String)
  • default (Boolean) (defaults to: false)
  • block (T.proc.returns(String), nil)

Returns:



363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
# File 'cask/dsl.rb', line 363

def language(*args, default: false, &block)
  if args.empty?
    language_eval
  elsif block
    @language_blocks[args] = block

    return unless default

    if !@cask.allow_reassignment && @language_blocks.default.present?
      raise CaskInvalidError.new(cask, "Only one default language may be defined.")
    end

    @language_blocks.default = block
    nil
  else
    raise CaskInvalidError.new(cask, "No block given to language stanza.")
  end
end

#language_evalString?

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:



383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
# File 'cask/dsl.rb', line 383

def language_eval
  return @language_eval unless @language_eval.nil?

  return @language_eval = nil if @language_blocks.empty?

  if (language_blocks_default = @language_blocks.default).nil?
    raise CaskInvalidError.new(cask, "No default language specified.")
  end

  locales = cask.config.languages
                .filter_map do |language|
                  Locale.parse(language)
                rescue Locale::ParserError
                  nil
                end

  locales.each do |locale|
    key = T.cast(locale.detect(@language_blocks.keys), T.nilable(T::Array[String]))
    next if key.nil? || (language_block = @language_blocks[key]).nil?

    return @language_eval = language_block.call
  end

  @language_eval = language_blocks_default.call
end

#language_groupsArray<Array<String>>

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:



415
416
417
# File 'cask/dsl.rb', line 415

def language_groups
  @language_blocks.keys
end

#languagesArray<String>

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:



410
411
412
# File 'cask/dsl.rb', line 410

def languages
  @language_blocks.keys.flatten
end

#livecheck(&block) ⇒ Livecheck

Automatically fetch the latest version of a cask from changelogs.

Parameters:

Returns:



725
726
727
728
729
730
731
732
733
734
735
736
# File 'cask/dsl.rb', line 725

def livecheck(&block)
  return @livecheck unless block

  if !@cask.allow_reassignment && @livecheck_defined
    raise CaskInvalidError.new(cask, "'livecheck' stanza may only appear once.")
  end

  @livecheck_defined = true
  @livecheck.instance_eval(&block)
  set_no_autobump(because: :extract_plist) if @livecheck.strategy == :extract_plist && !no_autobump_defined?
  @livecheck
end

#livecheck_defined?Boolean

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:

  • (Boolean)


261
# File 'cask/dsl.rb', line 261

def livecheck_defined? = @livecheck_defined

#manpage(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


61
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 61

def manpage(*args, **kwargs); end

#mdimporter(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


64
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 64

def mdimporter(*args, **kwargs); end

#name(*args) ⇒ Array<String>

Note:

Multiple names can be specified.

Specifies the cask's name.

Example

name "Visual Studio Code"

Parameters:

Returns:



281
282
283
284
285
# File 'cask/dsl.rb', line 281

def name(*args)
  return @name if args.empty?

  @name.concat(args.flatten)
end

#no_autobump!(because:) ⇒ void

This method returns an undefined value.

Excludes the cask from autobump list.

Parameters:



742
743
744
745
746
747
748
749
# File 'cask/dsl.rb', line 742

def no_autobump!(because:)
  tap = @cask.tap
  if tap && !tap.official?
    raise CaskInvalidError.new(cask, "'no_autobump!' can only be used in official Homebrew taps.")
  end

  set_no_autobump(because:)
end

#on_arch_conditional(arm: nil, intel: nil) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • arm (T.type_parameter(:U), nil) (defaults to: nil)
  • intel (T.type_parameter(:U), nil) (defaults to: nil)

Returns:

  • (T.type_parameter(:U), nil)


73
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 73

def on_arch_conditional(arm: nil, intel: nil); end

#on_arm(&block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


81
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 81

def on_arm(&block); end

#on_big_sur(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


90
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 90

def on_big_sur(or_condition = nil, &block); end

#on_golden_gate(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


99
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 99

def on_golden_gate(or_condition = nil, &block); end

#on_intel(&block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


107
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 107

def on_intel(&block); end

#on_linux(&block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


115
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 115

def on_linux(&block); end

#on_macos(&block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


123
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 123

def on_macos(&block); end

#on_monterey(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


132
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 132

def on_monterey(or_condition = nil, &block); end

#on_os_blocks_exist?Boolean

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:

  • (Boolean)


267
# File 'cask/dsl.rb', line 267

def on_os_blocks_exist? = @on_os_blocks_exist

#on_sequoia(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


141
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 141

def on_sequoia(or_condition = nil, &block); end

#on_sonoma(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


150
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 150

def on_sonoma(or_condition = nil, &block); end

#on_system(linux, macos:, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • linux (Symbol)
  • macos (Symbol)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


160
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 160

def on_system(linux, macos:, &block); end

#on_system_blocks_exist?Boolean

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:

  • (Boolean)


264
# File 'cask/dsl.rb', line 264

def on_system_blocks_exist? = @on_system_blocks_exist

#on_system_conditional(macos: nil, linux: nil) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • macos (T.type_parameter(:U), nil) (defaults to: nil)
  • linux (T.type_parameter(:U), nil) (defaults to: nil)

Returns:

  • (T.type_parameter(:U), nil)


169
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 169

def on_system_conditional(macos: nil, linux: nil); end

#on_tahoe(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


178
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 178

def on_tahoe(or_condition = nil, &block); end

#on_ventura(or_condition = nil, &block) ⇒ T.type_parameter(:U)?

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.

Parameters:

  • or_condition (Symbol, nil) (defaults to: nil)
  • block (T.proc.returns(T.type_parameter(:U)))

Returns:

  • (T.type_parameter(:U), nil)


187
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 187

def on_ventura(or_condition = nil, &block); end

#os(macos: nil, linux: nil) ⇒ String?

Sets the cask's os strings.

Example

os macos: "darwin", linux: "tux"

Parameters:

  • macos (String, nil) (defaults to: nil)
  • linux (String, nil) (defaults to: nil)

Returns:



612
613
614
615
616
617
618
619
620
621
# File 'cask/dsl.rb', line 612

def os(macos: nil, linux: nil)
  should_return = macos.nil? && linux.nil?

  set_unique_stanza(:os, should_return) do
    @on_system_blocks_exist = true
    @on_os_blocks_exist = true

    on_system_conditional(macos:, linux:)
  end
end

#os_versionMacOSVersion?

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:



891
892
893
# File 'cask/dsl.rb', line 891

def os_version
  nil
end

#pkg(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


190
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 190

def pkg(*args, **kwargs); end

#postflight(&block) ⇒ 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.

Parameters:



193
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 193

def postflight(&block); end

#postflight_steps(steps = nil, **kwargs, &block) ⇒ 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.

Parameters:



202
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 202

def postflight_steps(steps = nil, **kwargs, &block); end

#preflight(&block) ⇒ 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.

Parameters:



205
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 205

def preflight(&block); end

#preflight_steps(steps = nil, **kwargs, &block) ⇒ 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.

Parameters:



214
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 214

def preflight_steps(steps = nil, **kwargs, &block); end

#prefpane(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


217
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 217

def prefpane(*args, **kwargs); end

#qlplugin(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


220
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 220

def qlplugin(*args, **kwargs); end

#rename(from = nil, to = nil) ⇒ Array<DSL::Rename>

Renames files after extraction.

This is useful when the downloaded file has unpredictable names that need to be normalized for proper artifact installation.

Example

rename "RØDECaster App*.pkg", "RØDECaster App.pkg"

Parameters:

  • from (String, nil) (defaults to: nil)
  • to (String, nil) (defaults to: nil)

Returns:

Raises:



491
492
493
494
495
496
# File 'cask/dsl.rb', line 491

def rename(from = nil, to = nil)
  return @rename if from.nil?
  raise CaskInvalidError.new(cask, "`rename` requires both a `from` and a `to` filename") if to.nil?

  @rename << DSL::Rename.new(from, to)
end

#respond_to_missing?(_method_name, _include_private = false) ⇒ Boolean

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.

Parameters:

  • _method_name (String, Symbol)
  • _include_private (Boolean) (defaults to: false)

Returns:

  • (Boolean)


886
887
888
# File 'cask/dsl.rb', line 886

def respond_to_missing?(_method_name, _include_private = false)
  false
end

#screen_saver(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


223
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 223

def screen_saver(*args, **kwargs); end

#service(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


226
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 226

def service(*args, **kwargs); end

#set_unique_stanza(stanza, should_return, &_block) ⇒ T.type_parameter(:U)

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.

Note:

Using WithoutRuntime to avoid Sorbet wrapping this method,

which would interfere with caller_locations in methods like url.

Parameters:

  • stanza (Symbol)
  • should_return (Boolean)
  • _block (T.proc.returns(T.all(BasicObject, T.type_parameter(:U))))

Returns:

  • (T.type_parameter(:U))


310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
# File 'cask/dsl.rb', line 310

def set_unique_stanza(stanza, should_return, &_block)
  return instance_variable_get(:"@#{stanza}") if should_return

  unless @cask.allow_reassignment
    if !instance_variable_get(:"@#{stanza}").nil? && !@called_in_on_system_block
      raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only appear once.")
    end

    if instance_variable_get(:"@#{stanza}_set_in_block") && @called_in_on_system_block
      raise CaskInvalidError.new(cask, "'#{stanza}' stanza may only be overridden once.")
    end
  end

  instance_variable_set(:"@#{stanza}_set_in_block", true) if @called_in_on_system_block
  instance_variable_set(:"@#{stanza}", yield)
rescue CaskInvalidError
  raise
rescue => e
  raise CaskInvalidError.new(cask, "'#{stanza}' stanza failed with: #{e}")
end

#sha256(arg = nil, arm: nil, intel: nil, x86_64: nil, x86_64_linux: nil, arm64_linux: nil) ⇒ Symbol, ...

Sets the cask's download checksum.

Example

For universal or single-architecture downloads:

sha256 "7bdb497080ffafdfd8cc94d8c62b004af1be9599e865e5555e456e2681e150ca"

For architecture- or OS-dependent downloads:

sha256 arm:          "7bdb497080ffafdfd8cc94d8c62b004af1be9599e865e5555e456e2681e150ca",
       intel:        "b3c1c2442480a0219b9e05cf91d03385858c20f04b764ec08a3fa83d1b27e7b2",
       arm64_linux:  "bd766af7e692afceb727a6f88e24e6e68d9882aeb3e8348412f6c03d96537c75",
       x86_64_linux: "1a2aee7f1ddc999993d4d7d42a150c5e602bc17281678050b8ed79a0500cc90f"

Parameters:

  • arg (String, Symbol, nil) (defaults to: nil)
  • arm (String, nil) (defaults to: nil)
  • intel (String, nil) (defaults to: nil)
  • x86_64 (String, nil) (defaults to: nil)
  • x86_64_linux (String, nil) (defaults to: nil)
  • arm64_linux (String, nil) (defaults to: nil)

Returns:



551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
# File 'cask/dsl.rb', line 551

def sha256(arg = nil, arm: nil, intel: nil, x86_64: nil, x86_64_linux: nil, arm64_linux: nil)
  should_return = arg.nil? && arm.nil? && (intel.nil? || x86_64.nil?) && x86_64_linux.nil? && arm64_linux.nil?

  x86_64 ||= intel if intel.present? && x86_64.nil?
  set_unique_stanza(:sha256, should_return) do
    if arm.present? || x86_64.present? || x86_64_linux.present? || arm64_linux.present?
      @on_system_blocks_exist = true
    end

    val = arg || on_system_conditional(
      macos: on_arch_conditional(arm:, intel: x86_64),
      linux: on_arch_conditional(arm: arm64_linux, intel: x86_64_linux),
    )
    case val
    when :no_check
      :no_check
    when String
      Checksum.new(val)
    when nil
      nil
    else
      raise CaskInvalidError.new(cask, "invalid 'sha256' value: #{val.inspect}")
    end
  end
end

#stage_only(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


229
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 229

def stage_only(*args, **kwargs); end

#staged_pathPathname

The staged location for this cask, including version number.

Returns:



681
682
683
684
685
686
# File 'cask/dsl.rb', line 681

def staged_path
  return @staged_path if @staged_path

  cask_version = version || :unknown
  @staged_path = caskroom_path.join(cask_version.to_s)
end

#suite(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


232
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 232

def suite(*args, **kwargs); end

#uninstall(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


235
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 235

def uninstall(*args, **kwargs); end

#uninstall_postflight(&block) ⇒ 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.

Parameters:



242
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 242

def uninstall_postflight(&block); end

#uninstall_postflight_steps(steps = nil, **kwargs, &block) ⇒ 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.

Parameters:



251
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 251

def uninstall_postflight_steps(steps = nil, **kwargs, &block); end

#uninstall_preflight(&block) ⇒ 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.

Parameters:



258
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 258

def uninstall_preflight(&block); end

#uninstall_preflight_steps(steps = nil, **kwargs, &block) ⇒ 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.

Parameters:



267
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 267

def uninstall_preflight_steps(steps = nil, **kwargs, &block); end

#url(uri = nil, **options) ⇒ URL?

Deprecated.

Use the default URL verification behaviour instead.

Sets the cask's download URL.

Example

url "https://update.code.visualstudio.com/#{version}/#{arch}/stable"

Parameters:

  • uri (URI::Generic, String, nil) (defaults to: nil)
  • options (T.untyped)

Returns:



437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
# File 'cask/dsl.rb', line 437

def url(uri = nil, **options)
  caller_location = caller_locations.fetch(0)
  return @url unless uri

  unless @cask.loaded_from_api?
    URL::DEPRECATED_URL_SPECS.each do |spec|
      next unless options[spec]

      odeprecated "the `#{spec}` parameter in the `url` stanza", "the default URL verification behaviour"
    end
  end

  set_unique_stanza(:url, false) do
    URL.new(uri, **options.except(*URL::DEPRECATED_URL_SPECS), caller_location:)
  end
end

#version(arg = nil) ⇒ DSL::Version?

Sets the cask's version.

Example

version "1.88.1"

Parameters:

Returns:

See Also:



509
510
511
512
513
514
515
516
517
518
519
# File 'cask/dsl.rb', line 509

def version(arg = nil)
  set_unique_stanza(:version, arg.nil?) do
    if !arg.is_a?(String) && arg != :latest
      raise CaskInvalidError.new(cask, "invalid 'version' value: #{arg.inspect}")
    end

    set_no_autobump(because: :latest_version) if arg == :latest && !no_autobump_defined?

    DSL::Version.new(arg)
  end
end

#vst3_plugin(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


270
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 270

def vst3_plugin(*args, **kwargs); end

#vst_plugin(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


273
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 273

def vst_plugin(*args, **kwargs); end

#zap(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


276
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 276

def zap(*args, **kwargs); end

#zsh_completion(*args, **kwargs) ⇒ 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.

Parameters:

  • args (T.anything)
  • kwargs (T.anything)


279
# File 'sorbet/rbi/dsl/cask/dsl.rbi', line 279

def zsh_completion(*args, **kwargs); end