Класс: Cask::Migrator Приватный
- Наследуется от:
- Object
- Object
- Cask::Migrator
- Подключает:
- Utils::Output::Mixin
- Определён в:
- cask/migrator.rb
Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам следует по возможности избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Краткое описание атрибутов экземпляра свернуть
- #new_cask ⇒ Cask только для чтения приватный
- #old_cask ⇒ Cask только для чтения приватный
Краткое описание методов класса свернуть
- .migrate_if_needed(new_cask, dry_run: false) ⇒ void приватный
- .replace_caskfile_token(path, old_token, new_token) ⇒ void приватный
Краткое описание методов экземпляра свернуть
- #initialize(old_cask, new_cask) ⇒ void конструктор приватный
- #migrate(dry_run: false) ⇒ 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(old_cask, new_cask) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
15 16 17 18 19 20 | # File 'cask/migrator.rb', line 15 def initialize(old_cask, new_cask) raise CaskNotInstalledError, new_cask unless new_cask.installed? @old_cask = old_cask @new_cask = new_cask end |
Подробное описание атрибутов экземпляра
#new_cask ⇒ Cask (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
12 13 14 | # File 'cask/migrator.rb', line 12 def new_cask @new_cask end |
#old_cask ⇒ Cask (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
12 13 14 | # File 'cask/migrator.rb', line 12 def old_cask @old_cask end |
Подробное описание методов класса
.migrate_if_needed(new_cask, dry_run: false) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
23 24 25 26 27 28 29 30 31 32 33 34 35 | # File 'cask/migrator.rb', line 23 def self.migrate_if_needed(new_cask, dry_run: false) old_tokens = new_cask.old_tokens return if old_tokens.empty? return unless (installed_caskfile = new_cask.installed_caskfile) installed_token = installed_caskfile.basename(installed_caskfile.extname).to_s return if new_cask.token == installed_token old_cask = Cask.new(installed_token) migrator = new(old_cask, new_cask) migrator.migrate(dry_run:) end |
.replace_caskfile_token(path, old_token, new_token) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
92 93 94 95 96 97 98 99 100 101 | # File 'cask/migrator.rb', line 92 def self.replace_caskfile_token(path, old_token, new_token) case path.extname when ".rb" ::Utils::Inreplace.inreplace path, /\A\s*cask\s+"#{Regexp.escape(old_token)}"/, "cask #{new_token.inspect}" when ".json" json = JSON.parse(path.read) json["token"] = new_token path.atomic_write json.to_json end end |
Подробное описание методов экземпляра
#migrate(dry_run: false) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 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 83 84 85 86 87 88 89 | # File 'cask/migrator.rb', line 38 def migrate(dry_run: false) old_token = old_cask.token new_token = new_cask.token old_caskroom_path = old_cask.caskroom_path new_caskroom_path = new_cask.caskroom_path old_caskfile = old_cask.installed_caskfile return if old_caskfile.nil? old_installed_caskfile = old_caskfile.relative_path_from(old_caskroom_path) new_installed_caskfile = old_installed_caskfile.dirname/old_installed_caskfile.basename.sub( old_token, new_token, ) if dry_run oh1 "Would migrate cask #{Formatter.identifier(old_token)} to #{Formatter.identifier(new_token)}" puts "cp -r #{old_caskroom_path}#{new_caskroom_path}" puts "mv #{new_caskroom_path}/#{old_installed_caskfile}#{new_caskroom_path}/#{new_installed_caskfile}" puts "rm -r #{old_caskroom_path}" puts "ln -s #{new_caskroom_path.basename}#{old_caskroom_path}" if (old_pin_path = old_cask.pin_path).symlink? && (pinned_version = old_cask.pinned_version) new_pin_path = new_cask.pin_path puts "rm #{old_pin_path}" puts "ln -s #{(new_caskroom_path/pinned_version).relative_path_from(new_pin_path.dirname)}#{new_pin_path}" end else oh1 "Migrating cask #{Formatter.identifier(old_token)} to #{Formatter.identifier(new_token)}" begin FileUtils.cp_r old_caskroom_path, new_caskroom_path FileUtils.mv new_caskroom_path/old_installed_caskfile, new_caskroom_path/new_installed_caskfile self.class.replace_caskfile_token(new_caskroom_path/new_installed_caskfile, old_token, new_token) rescue => e FileUtils.rm_rf new_caskroom_path raise e end FileUtils.rm_r old_caskroom_path FileUtils.ln_s new_caskroom_path.basename, old_caskroom_path if old_cask.pin_path.symlink? && (pinned_version = old_cask.pinned_version) begin new_cask.pin_path.make_relative_symlink(new_caskroom_path/pinned_version) old_cask.unpin rescue => e opoo "Failed to migrate cask pin from #{old_token} to #{new_token}: #{e}" end end end end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Cask/Migrator.html