Spec-Zone.ru › Homebrew

Модуль: Cask::Utils Закрытый

Расширен модулем:
Utils::Output::Mixin
Определён в:
cask/utils.rb,
cask/utils/trash.rb

Обзор

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

Вспомогательные функции для различных операций с cask.

Определено в пространстве имён

Модули: Trash

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

BUG_REPORTS_URL =

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

"https://github.com/Homebrew/homebrew-cask#reporting-bugs"
FULL_DISK_ACCESS_TCC_PATH =

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

T.let("~/Library/Application Support/com.apple.TCC", String)

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

  • .full_disk_access_enabled? ⇒ Boolean закрытый
  • .gain_permissions(path, command_args, command, &_block) ⇒ void закрытый
  • .gain_permissions_mkpath(path, command: SystemCommand) ⇒ void закрытый
  • .gain_permissions_remove(path, command: SystemCommand) ⇒ void закрытый
  • .gain_permissions_rmdir(path, command: SystemCommand) ⇒ void закрытый
  • .path_occupied?(path) ⇒ Boolean закрытый
  • .privacy_security_preference_pane(access) ⇒ String закрытый
  • .token_from(name) ⇒ String закрытый

Методы, включённые из 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

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

.full_disk_access_enabled? ⇒ Boolean

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

Возвращает:

  • (Boolean)


28
29
30
# File 'cask/utils.rb', line 28

def self.full_disk_access_enabled?
  File.readable?(File.expand_path(FULL_DISK_ACCESS_TCC_PATH))
end

.gain_permissions(path, command_args, command, &_block) ⇒ void

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

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

Параметры:

  • path (Pathname)
  • command_args (Array<String>)
  • command (T.class_of(SystemCommand))
  • _block (T.proc.params(path: Pathname).void)


92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'cask/utils.rb', line 92

def self.gain_permissions(path, command_args, command, &_block)
  tried_permissions = false
  tried_ownership = false
  begin
    yield path
  rescue
    # in case of permissions problems
    unless tried_permissions
      print_stderr = Context.current.debug? || Context.current.verbose?
      # TODO: Better handling for the case where path is a symlink.
      #       The `-h` and `-R` flags cannot be combined and behavior is
      #       dependent on whether the file argument has a trailing
      #       slash. This should do the right thing, but is fragile.
      command.run("/usr/bin/chflags",
                  print_stderr:,
                  args:         command_args + ["--", "000", path])
      command.run("chmod",
                  print_stderr:,
                  args:         command_args + ["--", "u+rwx", path])
      command.run("chmod",
                  print_stderr:,
                  args:         command_args + ["-N", path])
      tried_permissions = true
      retry # rmtree
    end

    unless tried_ownership
      # in case of ownership problems
      # TODO: Further examine files to see if ownership is the problem
      #       before using `sudo` and `chown`.
      ohai "Using sudo to gain ownership of path '#{path}'"
      command.run("chown",
                  args: command_args + ["--", User.current.to_s, path],
                  sudo: true)
      tried_ownership = true
      # retry chflags/chmod after chown
      tried_permissions = false
      retry # rmtree
    end

    raise
  end
end

.gain_permissions_mkpath(path, command: SystemCommand) ⇒ void

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

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

Параметры:

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


33
34
35
36
37
38
39
40
41
42
# File 'cask/utils.rb', line 33

def self.gain_permissions_mkpath(path, command: SystemCommand)
  dir = path.ascend.find(&:directory?)
  return if path == dir

  if dir&.writable?
    path.mkpath
  else
    command.run!("mkdir", args: ["-p", "--", path], sudo: true, print_stderr: false)
  end
end

.gain_permissions_remove(path, command: SystemCommand) ⇒ void

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

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

Параметры:

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


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'cask/utils.rb', line 56

def self.gain_permissions_remove(path, command: SystemCommand)
  directory = false
  permission_flags = if path.symlink?
    ["-h"]
  elsif path.directory?
    directory = true
    ["-R"]
  elsif path.exist?
    []
  else
    # Nothing to remove.
    return
  end

  gain_permissions(path, permission_flags, command) do |p|
    if p.parent.writable?
      if directory
        FileUtils.rm_r p
      else
        FileUtils.rm_f p
      end
    else
      recursive_flag = directory ? ["-R"] : []
      command.run!("/bin/rm", args: recursive_flag + ["-f", "--", p], sudo: true, print_stderr: false)
    end
  end
end

.gain_permissions_rmdir(path, command: SystemCommand) ⇒ void

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

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

Параметры:

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


45
46
47
48
49
50
51
52
53
# File 'cask/utils.rb', line 45

def self.gain_permissions_rmdir(path, command: SystemCommand)
  gain_permissions(path, [], command) do |p|
    if p.parent.writable?
      FileUtils.rmdir p
    else
      command.run!("rmdir", args: ["--", p], sudo: true, print_stderr: false)
    end
  end
end

.path_occupied?(path) ⇒ Boolean

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

Параметры:

  • path (Pathname)

Возвращает:

  • (Boolean)


137
138
139
# File 'cask/utils.rb', line 137

def self.path_occupied?(path)
  path.exist? || path.symlink?
end

.privacy_security_preference_pane(access) ⇒ String

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

Параметры:

  • access (String)

Возвращает:

  • (String)


17
18
19
20
21
22
23
24
25
# File 'cask/utils.rb', line 17

def self.privacy_security_preference_pane(access)
  navigation_path = if MacOS.version >= :ventura
    "System Settings → Privacy & Security"
  else
    "System Preferences → Security & Privacy → Privacy"
  end

  "#{navigation_path} → #{access}"
end

.token_from(name) ⇒ String

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

Параметры:

  • name (String)

Возвращает:

  • (String)


142
143
144
145
146
147
148
149
150
# File 'cask/utils.rb', line 142

def self.token_from(name)
  name.downcase
      .gsub("+", "-plus-")
      .gsub(/[ _·•]/, "-")
      .gsub(/[^\w@-]/, "")
      .gsub(/--+/, "-")
      .delete_prefix("-")
      .delete_suffix("-")
end

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

Spec-Zone.ru

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