Spec-Zone.ru › Homebrew

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

Наследует:
Object
  • Object
  • Cask::Pkg
показать все
Включает:
Utils::Output::Mixin
Определён в:
cask/pkg.rb

Обзор

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

Вспомогательный класс для удаления установщиков .pkg.

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

  • #package_id ⇒ String только для чтения закрытый

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

  • .all_matching(regexp, command) ⇒ Array<Pkg> закрытый

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

  • #forget ⇒ void закрытый
  • #info ⇒ T.untyped закрытый
  • #initialize(package_id, command = SystemCommand) ⇒ void конструктор закрытый
  • #pkgutil_bom_all ⇒ Array<Pathname> закрытый
  • #pkgutil_bom_dirs ⇒ Array<Pathname> закрытый
  • #pkgutil_bom_files ⇒ Array<Pathname> закрытый
  • #pkgutil_bom_specials ⇒ Array<Pathname> закрытый
  • #root ⇒ Pathname закрытый
  • #uninstall ⇒ void закрытый

Методы, включённые из 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(package_id, command = SystemCommand) ⇒ void

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

Параметры:

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


23
24
25
26
# File 'cask/pkg.rb', line 23

def initialize(package_id, command = SystemCommand)
  @package_id = package_id
  @command = command
end

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

#package_id ⇒ String (только для чтения)

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

Возвращает:

  • (String)


20
21
22
# File 'cask/pkg.rb', line 20

def package_id
  @package_id
end

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

.all_matching(regexp, command) ⇒ Array<Pkg>

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

Параметры:

  • regexp (String)
  • command (T.class_of(SystemCommand))

Возвращает:

  • (Array<Pkg>)


13
14
15
16
17
# File 'cask/pkg.rb', line 13

def self.all_matching(regexp, command)
  command.run("/usr/sbin/pkgutil", args: ["--pkgs=#{regexp}"]).stdout.split("\n").map do |package_id|
    new(package_id.chomp, command)
  end
end

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

#forget ⇒ void

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

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



63
64
65
66
67
68
69
70
71
# File 'cask/pkg.rb', line 63

def forget
  odebug "Unregistering pkg receipt (aka forgetting)"
  @command.run!(
    "/usr/sbin/pkgutil",
    args:         ["--forget", package_id],
    sudo:         true,
    sudo_as_root: true,
  )
end

#info ⇒ T.untyped

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

Возвращает:

  • (T.untyped)


108
109
110
# File 'cask/pkg.rb', line 108

def info
  @info ||= T.let(@command.run!("/usr/sbin/pkgutil", args: ["--pkg-info-plist", package_id]).plist, T.untyped)
end

#pkgutil_bom_all ⇒ Array<Pathname>

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

Возвращает:

  • (Array<Pathname>)


91
92
93
94
95
96
97
98
99
100
# File 'cask/pkg.rb', line 91

def pkgutil_bom_all
  @pkgutil_bom_all ||= T.let(
    @command.run!("/usr/sbin/pkgutil", args: ["--files", package_id])
            .stdout
            .split("\n")
            .map { |path| root.join(path) }
            .reject { |path| MacOS.undeletable?(path) },
    T.nilable(T::Array[Pathname]),
  )
end

#pkgutil_bom_dirs ⇒ Array<Pathname>

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

Возвращает:

  • (Array<Pathname>)


85
86
87
88
# File 'cask/pkg.rb', line 85

def pkgutil_bom_dirs
  @pkgutil_bom_dirs ||= T.let(pkgutil_bom_all.select(&:directory?) - pkgutil_bom_specials,
                              T.nilable(T::Array[Pathname]))
end

#pkgutil_bom_files ⇒ Array<Pathname>

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

Возвращает:

  • (Array<Pathname>)


74
75
76
77
# File 'cask/pkg.rb', line 74

def pkgutil_bom_files
  @pkgutil_bom_files ||= T.let(pkgutil_bom_all.select(&:file?) - pkgutil_bom_specials,
                               T.nilable(T::Array[Pathname]))
end

#pkgutil_bom_specials ⇒ Array<Pathname>

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

Возвращает:

  • (Array<Pathname>)


80
81
82
# File 'cask/pkg.rb', line 80

def pkgutil_bom_specials
  @pkgutil_bom_specials ||= T.let(pkgutil_bom_all.select { special?(it) }, T.nilable(T::Array[Pathname]))
end

#root ⇒ Pathname

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

Возвращает:

  • (Pathname)


103
104
105
# File 'cask/pkg.rb', line 103

def root
  @root ||= T.let(Pathname.new(info.fetch("volume")).join(info.fetch("install-location")), T.nilable(Pathname))
end

#uninstall ⇒ void

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

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



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'cask/pkg.rb', line 29

def uninstall
  unless pkgutil_bom_files.empty?
    odebug "Deleting pkg files"
    @command.run!(
      "/usr/bin/xargs",
      args:         ["-0", "--", "/bin/rm", "--"],
      input:        pkgutil_bom_files.join("\0"),
      sudo:         true,
      sudo_as_root: true,
    )
  end

  unless pkgutil_bom_specials.empty?
    odebug "Deleting pkg symlinks and special files"
    @command.run!(
      "/usr/bin/xargs",
      args:         ["-0", "--", "/bin/rm", "--"],
      input:        pkgutil_bom_specials.join("\0"),
      sudo:         true,
      sudo_as_root: true,
    )
  end

  unless pkgutil_bom_dirs.empty?
    odebug "Deleting pkg directories"
    rmdir(deepest_path_first(pkgutil_bom_dirs))
  end

  rmdir(root) unless MacOS.undeletable?(root)

  forget
end

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

Spec-Zone.ru

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