Class: Cask::Migrator
Instance Attribute Summary collapse
-
#new_cask ⇒ Object
readonly
Returns the value of attribute new_cask.
-
#old_cask ⇒ Object
readonly
Returns the value of attribute old_cask.
Class Method Summary collapse
-
.migrate_if_needed(new_cask, dry_run: false) ⇒ void
-
.replace_caskfile_token(path, old_token, new_token) ⇒ void
Instance Method Summary collapse
Constructor Details
#initialize(old_cask, new_cask) ⇒ void
12 13 14 15 16 17 |
# File 'cask/migrator.rb', line 12 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 ⇒ Object (readonly)
Returns the value of attribute new_cask.
9 10 11 |
# File 'cask/migrator.rb', line 9 def new_cask @new_cask end |
#old_cask ⇒ Object (readonly)
Returns the value of attribute old_cask.
9 10 11 |
# File 'cask/migrator.rb', line 9 def old_cask @old_cask end |
Class Method Details
.migrate_if_needed(new_cask, dry_run: false) ⇒ void
This method returns an undefined value.
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'cask/migrator.rb', line 20 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) old_cask = CaskLoader.load(installed_caskfile) return if new_cask.token == old_cask.token migrator = new(old_cask, new_cask) migrator.migrate(dry_run:) end |
.replace_caskfile_token(path, old_token, new_token) ⇒ void
This method returns an undefined value.
72 73 74 75 76 77 78 79 80 81 |
# File 'cask/migrator.rb', line 72 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 returns an undefined value.
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 61 62 63 64 65 66 67 68 69 |
# File 'cask/migrator.rb', line 34 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_installed_caskfile = old_cask.installed_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}" 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 end end |