Spec-Zone.ru › Homebrew

Класс: AbstractTab Закрытый

Наследует:
Object
  • Object
  • AbstractTab
показать все
Расширен модулями:
Cachable, T::Generic, T::Helpers
Определён в:
tab.rb

Обзор

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

Вместо прямого вызова new используйте один из методов класса, например Tab.create.

Известные прямые подклассы

Cask::Tab, Tab

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

Cache =

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

type_template { { fixed: T::Hash[T.any(Pathname, String), T.untyped] } }
FILENAME =

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

"INSTALL_RECEIPT.json"
RuntimeDependencies =

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

T.type_alias do
  T.nilable(T.any(T::Array[String], T::Array[T::Hash[String, T.untyped]], T::Hash[String, T.untyped],
                  T::Hash[Symbol, T.untyped]))
end

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

  • #arch ⇒ String, ... закрытый
  • #built_on ⇒ Hash{String => T.untyped}? закрытый
  • #homebrew_version ⇒ String? закрытый
  • #installed_on_request ⇒ Boolean внутренний

    Проверяет, была ли формула или cask установлена по запросу.

  • #loaded_from_api ⇒ Boolean? закрытый
  • #loaded_from_internal_api ⇒ Boolean? закрытый
  • #runtime_dependencies ⇒ RuntimeDependencies внутренний

    Возвращает зависимости формулы или cask, необходимые во время выполнения.

  • #source ⇒ Hash{String => T.untyped} закрытый
  • #tabfile ⇒ Pathname? закрытый
  • #time ⇒ Integer? закрытый

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

  • .create(formula_or_cask) ⇒ T.attached_class закрытый

    Создаёт экземпляр Tab для новой установки формулы или cask.

  • .empty ⇒ T.attached_class закрытый
  • .from_file(path) ⇒ T.attached_class закрытый

    Возвращает Tab для квитанции об установке формулы или cask по адресу path.

  • .from_file_content(content, path) ⇒ T.attached_class закрытый

    Как AbstractTab.from_file, но без использования кэша.

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

  • #initialize(attributes = {}) ⇒ void конструктор закрытый
  • #installed_on_request_present? ⇒ Boolean закрытый
  • #parsed_homebrew_version ⇒ Version закрытый
  • #tap ⇒ Tap? закрытый
  • #tap=(tap) ⇒ void закрытый
  • #write ⇒ void закрытый

Методы, включённые из Cachable

cache, clear_cache

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

#initialize(attributes = {}) ⇒ void

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

ЗАДАЧА:

Изменить атрибуты так, чтобы принимались только ключи-символы (стиль kwargs).

Параметры:

  • attributes (Hash{String => T.untyped}, Hash{Symbol => T.untyped}) (по умолчанию: {})


66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'tab.rb', line 66

def initialize(attributes = {})
  @installed_on_request = T.let(false, T::Boolean)
  @installed_on_request_present = T.let(false, T::Boolean)
  @homebrew_version = T.let(nil, T.nilable(String))
  @tabfile = T.let(nil, T.nilable(Pathname))
  @loaded_from_api = T.let(nil, T.nilable(T::Boolean))
  @loaded_from_internal_api = T.let(nil, T.nilable(T::Boolean))
  @time = T.let(nil, T.nilable(Integer))
  @arch = T.let(nil, T.nilable(T.any(String, Symbol)))
  @source = T.let({}, T::Hash[String, T.untyped])
  @built_on = T.let(nil, T.nilable(T::Hash[String, T.untyped]))
  @runtime_dependencies = T.let(nil, RuntimeDependencies)

  attributes.each do |key, value|
    case key.to_sym
    when :installed_on_request
      @installed_on_request = value.nil? ? false : value
      @installed_on_request_present = true
    when :changed_files
      @changed_files = T.let(value&.map { |f| Pathname(f) }, T.nilable(T::Array[Pathname]))
    else
      instance_variable_set(:"@#{key}", value)
    end
  end
end

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

#arch ⇒ String, ...

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

Возвращает:

  • (String, Symbol, nil)


50
51
52
# File 'tab.rb', line 50

def arch
  @arch
end

#built_on ⇒ Hash{String => T.untyped}?

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

Возвращает:

  • (Hash{String => T.untyped}, nil)


56
57
58
# File 'tab.rb', line 56

def built_on
  @built_on
end

#homebrew_version ⇒ String?

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

Возвращает:

  • (String, nil)


35
36
37
# File 'tab.rb', line 35

def homebrew_version
  @homebrew_version
end

#installed_on_request ⇒ Boolean

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

Проверяет, была ли формула или cask установлена по запросу.

Возвращает:

  • (Boolean)


32
33
34
# File 'tab.rb', line 32

def installed_on_request
  @installed_on_request
end

#loaded_from_api ⇒ Boolean?

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

Возвращает:

  • (Boolean, nil)


41
42
43
# File 'tab.rb', line 41

def loaded_from_api
  @loaded_from_api
end

#loaded_from_internal_api ⇒ Boolean?

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

Возвращает:

  • (Boolean, nil)


44
45
46
# File 'tab.rb', line 44

def loaded_from_internal_api
  @loaded_from_internal_api
end

#runtime_dependencies ⇒ RuntimeDependencies

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

Возвращает зависимости формулы или cask, необходимые во время выполнения.

Возвращает:

  • (RuntimeDependencies)


62
63
64
# File 'tab.rb', line 62

def runtime_dependencies
  @runtime_dependencies
end

#source ⇒ Hash{String => T.untyped}

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

Возвращает:

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


53
54
55
# File 'tab.rb', line 53

def source
  @source
end

#tabfile ⇒ Pathname?

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

Возвращает:

  • (Pathname, nil)


38
39
40
# File 'tab.rb', line 38

def tabfile
  @tabfile
end

#time ⇒ Integer?

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

Возвращает:

  • (Integer, nil)


47
48
49
# File 'tab.rb', line 47

def time
  @time
end

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

.create(formula_or_cask) ⇒ T.attached_class

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

Создаёт экземпляр Tab для новой установки формулы или cask.

Параметры:

  • formula_or_cask (Formula, Cask::Cask)

Возвращает:

  • (T.attached_class)


94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'tab.rb', line 94

def self.create(formula_or_cask)
  attributes = {
    "homebrew_version"         => HOMEBREW_VERSION,
    "installed_on_request"     => false,
    "loaded_from_api"          => formula_or_cask.loaded_from_api?,
    "loaded_from_internal_api" => formula_or_cask.loaded_from_internal_api?,
    "time"                     => Time.now.to_i,
    "arch"                     => Hardware::CPU.arch,
    "source"                   => {
      "tap"          => formula_or_cask.tap&.name,
      "tap_git_head" => formula_or_cask.tap_git_head,
    },
    "built_on"                 => DevelopmentTools.build_system_info,
  }

  new(attributes)
end

.empty ⇒ T.attached_class

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

Возвращает:

  • (T.attached_class)


139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'tab.rb', line 139

def self.empty
  attributes = {
    "homebrew_version"         => HOMEBREW_VERSION,
    "installed_on_request"     => false,
    "loaded_from_api"          => false,
    "loaded_from_internal_api" => false,
    "time"                     => nil,
    "runtime_dependencies"     => nil,
    "arch"                     => nil,
    "source"                   => {
      "path"         => nil,
      "tap"          => nil,
      "tap_git_head" => nil,
    },
    "built_on"                 => DevelopmentTools.build_system_info,
  }

  new(attributes)
end

.from_file(path) ⇒ T.attached_class

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

Примечание:

Результаты кэшируются.

Возвращает Tab для квитанции об установке формулы или cask по адресу path.

Параметры:

  • path (Pathname, String)

Возвращает:

  • (T.attached_class)


116
117
118
119
120
121
122
123
# File 'tab.rb', line 116

def self.from_file(path)
  cache.fetch(path) do |p|
    content = File.read(p)
    return empty if content.blank?

    cache[p] = from_file_content(content, p)
  end
end

.from_file_content(content, path) ⇒ T.attached_class

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

Как from_file, но без использования кэша.

Параметры:

  • content (String)
  • path (Pathname, String)

Возвращает:

  • (T.attached_class)


127
128
129
130
131
132
133
134
135
136
# File 'tab.rb', line 127

def self.from_file_content(content, path)
  attributes = begin
    JSON.parse(content)
  rescue JSON::ParserError => e
    raise e, "Cannot parse #{path}: #{e}", e.backtrace
  end
  attributes["tabfile"] = path

  new(attributes)
end

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

#installed_on_request_present? ⇒ Boolean

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

Возвращает:

  • (Boolean)


182
# File 'tab.rb', line 182

def installed_on_request_present? = @installed_on_request_present

#parsed_homebrew_version ⇒ Version

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

Возвращает:

  • (Version)


174
175
176
177
178
179
# File 'tab.rb', line 174

def parsed_homebrew_version
  homebrew_version = self.homebrew_version
  return Version::NULL if homebrew_version.nil?

  Version.new(homebrew_version)
end

#tap ⇒ Tap?

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

Возвращает:

  • (Tap, nil)


185
186
187
188
# File 'tab.rb', line 185

def tap
  tap_name = source["tap"]
  Tap.fetch(tap_name) if tap_name
end

#tap=(tap) ⇒ void

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

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

Параметры:

  • tap (Tap, String, nil)


191
192
193
194
# File 'tab.rb', line 191

def tap=(tap)
  tap_name = tap.is_a?(Tap) ? tap.name : tap
  source["tap"] = tap_name
end

#write ⇒ void

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

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



197
198
199
200
201
202
203
# File 'tab.rb', line 197

def write
  tfile = tabfile
  raise "No tabfile to write to" unless tfile

  self.class.cache[tfile] = self
  tfile.atomic_write(to_json)
end

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

Spec-Zone.ru

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