Class: Cask::Migrator Private
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Instance Attribute Summary collapse
- #new_cask ⇒ Cask readonly private
- #old_cask ⇒ Cask readonly private
Class Method Summary collapse
- .migrate_if_needed(new_cask, dry_run: false) ⇒ void private
-
.old_tokens_needing_migration(new_cask, dry_run: false) ⇒ Array<String>
private
The old tokens of
new_caskthat are still installed in their own Caskroom directory. - .replace_caskfile_token(path, old_token, new_token) ⇒ void private
Instance Method Summary collapse
- #initialize(old_cask, new_cask) ⇒ void constructor private
- #migrate(dry_run: false) ⇒ void private
Methods included from 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_unmarked, pretty_upgradable, pretty_warning
Constructor Details
#initialize(old_cask, new_cask) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
16 17 18 19 20 21 |
# File 'cask/migrator.rb', line 16 def initialize(old_cask, new_cask) raise CaskNotInstalledError, new_cask unless new_cask.installed? @old_cask = old_cask @new_cask = new_cask end |
Instance Attribute Details
#new_cask ⇒ Cask (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
13 14 15 |
# File 'cask/migrator.rb', line 13 def new_cask @new_cask end |
#old_cask ⇒ Cask (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
13 14 15 |
# File 'cask/migrator.rb', line 13 def old_cask @old_cask end |
Class Method Details
.migrate_if_needed(new_cask, dry_run: false) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
46 47 48 49 50 51 52 |
# File 'cask/migrator.rb', line 46 def self.migrate_if_needed(new_cask, dry_run: false) old_tokens_needing_migration(new_cask).each do |old_token| new(Cask.new(old_token), new_cask).migrate(dry_run:) rescue => e onoe e end end |
.old_tokens_needing_migration(new_cask, dry_run: false) ⇒ Array<String>
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
The old tokens of new_cask that are still installed in their own Caskroom directory.
A symlinked directory means the cask has already been migrated.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'cask/migrator.rb', line 26 def self.old_tokens_needing_migration(new_cask, dry_run: false) new_cask.old_tokens .map { |old_token| Caskroom.token_from_full_token(old_token) } .uniq .select do |old_token| next false if old_token == new_cask.token old_caskroom_path = Caskroom.path/old_token next false if old_caskroom_path.symlink? || !old_caskroom_path.directory? if Caskroom.cask_installed_caskfile(old_token).nil? old_caskroom_path.rmdir_if_possible unless dry_run next false end true end end |
.replace_caskfile_token(path, old_token, new_token) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
68 69 70 71 72 73 74 75 76 77 |
# File 'cask/migrator.rb', line 68 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 |
Instance Method Details
#migrate(dry_run: false) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
55 56 57 58 59 60 61 62 63 64 65 |
# File 'cask/migrator.rb', line 55 def migrate(dry_run: false) old_caskfile = old_cask.installed_caskfile return if old_caskfile.nil? new_caskroom_path = new_cask.caskroom_path if new_caskroom_path.directory? && !new_caskroom_path.symlink? uninstall_old_cask(old_caskfile, dry_run:) else move_old_cask(old_caskfile, dry_run:) end end |