Spec-Zone.ru › Homebrew

Класс: Cask::Artifact::Installer Закрытый

Наследует:
AbstractArtifact
  • Object
  • AbstractArtifact
  • Cask::Artifact::Installer
показать все
Определён в:
cask/artifact/installer.rb

Обзор

Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.

Артефакт, соответствующий директиве installer.

Краткое описание констант свернуть

VALID_KEYS =

Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

T.let(Set.new([
  :manual,
  :script,
]).freeze, T::Set[Symbol])

Константы, унаследованные от AbstractArtifact

AbstractArtifact::DirectivesType

Краткое описание атрибутов экземпляра свернуть

  • #args ⇒ Hash{Symbol => T.untyped} только чтение закрытый
  • #manual_install ⇒ Boolean только чтение закрытый
  • #path ⇒ Pathname только чтение закрытый

Атрибуты, унаследованные от AbstractArtifact

#cask

Краткое описание методов класса свернуть

  • .from_args(cask, **args) ⇒ T.attached_class закрытый

Краткое описание методов экземпляра свернуть

  • #initialize(cask, **args) ⇒ void конструктор закрытый
  • #install_phase(command: SystemCommand, **_options) ⇒ void закрытый
  • #summarize ⇒ String закрытый
  • #to_h ⇒ Hash{Symbol => T.untyped} закрытый

Методы, унаследованные от AbstractArtifact

#cask_sandbox, #cask_sandbox_command, #config, dirmethod, dsl_key, english_article, english_name, read_script_arguments, #run_cask_sandbox, #sort_order, #staged_path_join_executable, #to_args

Методы, включённые из 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_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_upgradable, #pretty_warning

Подробное описание конструкторов

#initialize(cask, **args) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • cask (Cask)
  • args (T.untyped)


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'cask/artifact/installer.rb', line 74

def initialize(cask, **args)
  super

  if args.key?(:manual)
    @path = T.let(Pathname(args[:manual]), Pathname)
    @args = T.let({}, T::Hash[Symbol, T.untyped])
    @manual_install = T.let(true, T::Boolean)
  else
    script_path, script_args = self.class.read_script_arguments(
      args[:script], self.class.dsl_key.to_s, { must_succeed: true, sudo: false }, print_stdout: true
    )
    raise CaskInvalidError.new(cask, "#{self.class.dsl_key} missing executable") if script_path.nil?

    @path = T.let(Pathname(script_path), Pathname)
    @args = T.let(script_args, T::Hash[Symbol, T.untyped])
    @manual_install = T.let(false, T::Boolean)
  end
end

Подробное описание атрибутов экземпляра

#args ⇒ Hash{Symbol => T.untyped} (только чтение)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Hash{Symbol => T.untyped})


68
69
70
# File 'cask/artifact/installer.rb', line 68

def args
  @args
end

#manual_install ⇒ Boolean (только чтение)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


71
72
73
# File 'cask/artifact/installer.rb', line 71

def manual_install
  @manual_install
end

#path ⇒ Pathname (только чтение)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Pathname)


65
66
67
# File 'cask/artifact/installer.rb', line 65

def path
  @path
end

Подробное описание методов класса

.from_args(cask, **args) ⇒ T.attached_class

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим лицам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • cask (Cask)
  • args (T.untyped)

Возвращает:

  • (T.attached_class)

Вызывает исключение:

  • (CaskInvalidError)


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'cask/artifact/installer.rb', line 40

def self.from_args(cask, **args)
  raise CaskInvalidError.new(cask, "'installer' stanza requires an argument.") if args.empty?

  if args.key?(:script) && !args[:script].respond_to?(:key?)
    if args.key?(:executable)
      raise CaskInvalidError.new(cask, "'installer' stanza gave arguments for both :script and :executable.")
    end

    args[:executable] = args[:script]
    args.delete(:script)
    args = { script: args }
  end

  if args.keys.count != 1
    raise CaskInvalidError.new(
      cask,
      "invalid 'installer' stanza: Only one of #{VALID_KEYS.inspect} is permitted.",
    )
  end

  args.assert_valid_keys(*VALID_KEYS)
  new(cask, **args)
end

Подробное описание методов экземпляра

#install_phase(command: SystemCommand, **_options) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим лицам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Этот метод не возвращает значение.

Параметры:

  • command (T.class_of(SystemCommand)) (по умолчанию: SystemCommand)
  • _options (T.anything)


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'cask/artifact/installer.rb', line 17

def install_phase(command: SystemCommand, **_options)
  if manual_install
    puts <<~EOS
      Cask #{cask} only provides a manual installer. To run it and complete the installation:
        open #{cask.staged_path.join(path).to_s.shellescape}    EOS
  else
    ohai "Running #{self.class.dsl_key} script '#{path}'"

    executable_path = staged_path_join_executable(path)

    command.run!(
      executable_path,
      **args,
      env:       { "PATH" => PATH.new(
        HOMEBREW_PREFIX/"bin", HOMEBREW_PREFIX/"sbin", ENV.fetch("PATH")
      ) },
      reset_uid: !args[:sudo],
    )
  end
end

#summarize ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим лицам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


94
# File 'cask/artifact/installer.rb', line 94

def summarize = path.to_s

#to_h ⇒ Hash{Symbol => T.untyped}

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим лицам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Hash{Symbol => T.untyped})


97
98
99
100
101
# File 'cask/artifact/installer.rb', line 97

def to_h
  { path: }.tap do |h|
    h[:args] = args unless manual_install
  end
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Cask/Artifact/Installer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API