Merge pull request #3492 from amyspark/fix-latest-casks
Properly upgrade Casks with version :latest
This commit is contained in:
commit
3f7e63a24c
@ -70,8 +70,6 @@ module Hbc
|
|||||||
else
|
else
|
||||||
command.run("/bin/mv", args: [target, source], sudo: true)
|
command.run("/bin/mv", args: [target, source], sudo: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
add_altname_metadata(target, source.basename, command: command)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete(target, force: false, command: nil, **_)
|
def delete(target, force: false, command: nil, **_)
|
||||||
|
@ -55,14 +55,14 @@ module Hbc
|
|||||||
|
|
||||||
new_cask_installer.fetch
|
new_cask_installer.fetch
|
||||||
|
|
||||||
new_cask_installer.stage
|
|
||||||
|
|
||||||
# Move the old Cask's artifacts back to staging
|
# Move the old Cask's artifacts back to staging
|
||||||
old_cask_installer.start_upgrade
|
old_cask_installer.start_upgrade
|
||||||
# And flag it so in case of error
|
# And flag it so in case of error
|
||||||
started_upgrade = true
|
started_upgrade = true
|
||||||
|
|
||||||
# Install the new Cask
|
# Install the new Cask
|
||||||
|
new_cask_installer.stage
|
||||||
|
|
||||||
new_cask_installer.install_artifacts
|
new_cask_installer.install_artifacts
|
||||||
new_artifacts_installed = true
|
new_artifacts_installed = true
|
||||||
|
|
||||||
|
@ -360,16 +360,33 @@ module Hbc
|
|||||||
|
|
||||||
disable_accessibility_access
|
disable_accessibility_access
|
||||||
uninstall_artifacts
|
uninstall_artifacts
|
||||||
|
backup
|
||||||
|
end
|
||||||
|
|
||||||
|
def backup
|
||||||
|
@cask.staged_path.rename backup_path
|
||||||
|
@cask.metadata_versioned_path.rename backup_metadata_path
|
||||||
|
end
|
||||||
|
|
||||||
|
def restore_backup
|
||||||
|
return unless backup_path.directory? && backup_metadata_path.directory?
|
||||||
|
|
||||||
|
Pathname.new(@cask.staged_path).rmtree if @cask.staged_path.exist?
|
||||||
|
Pathname.new(@cask.metadata_versioned_path).rmtree if @cask.metadata_versioned_path.exist?
|
||||||
|
|
||||||
|
backup_path.rename @cask.staged_path
|
||||||
|
backup_metadata_path.rename @cask.metadata_versioned_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def revert_upgrade
|
def revert_upgrade
|
||||||
opoo "Reverting upgrade for Cask #{@cask}"
|
opoo "Reverting upgrade for Cask #{@cask}"
|
||||||
|
restore_backup
|
||||||
install_artifacts
|
install_artifacts
|
||||||
enable_accessibility_access
|
enable_accessibility_access
|
||||||
end
|
end
|
||||||
|
|
||||||
def finalize_upgrade
|
def finalize_upgrade
|
||||||
purge_versioned_files
|
purge_backed_up_versioned_files
|
||||||
|
|
||||||
puts summary
|
puts summary
|
||||||
end
|
end
|
||||||
@ -402,10 +419,37 @@ module Hbc
|
|||||||
purge_caskroom_path
|
purge_caskroom_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def backup_path
|
||||||
|
return nil if @cask.staged_path.nil?
|
||||||
|
Pathname.new "#{@cask.staged_path}.upgrading"
|
||||||
|
end
|
||||||
|
|
||||||
|
def backup_metadata_path
|
||||||
|
return nil if @cask.metadata_versioned_path.nil?
|
||||||
|
Pathname.new "#{@cask.metadata_versioned_path}.upgrading"
|
||||||
|
end
|
||||||
|
|
||||||
def gain_permissions_remove(path)
|
def gain_permissions_remove(path)
|
||||||
Utils.gain_permissions_remove(path, command: @command)
|
Utils.gain_permissions_remove(path, command: @command)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def purge_backed_up_versioned_files
|
||||||
|
ohai "Purging files for version #{@cask.version} of Cask #{@cask}"
|
||||||
|
|
||||||
|
# versioned staged distribution
|
||||||
|
gain_permissions_remove(backup_path) if !backup_path.nil? && backup_path.exist?
|
||||||
|
|
||||||
|
# Homebrew-Cask metadata
|
||||||
|
if backup_metadata_path.directory?
|
||||||
|
backup_metadata_path.children.each do |subdir|
|
||||||
|
unless PERSISTENT_METADATA_SUBDIRS.include?(subdir.basename)
|
||||||
|
gain_permissions_remove(subdir)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
backup_metadata_path.rmdir_if_possible
|
||||||
|
end
|
||||||
|
|
||||||
def purge_versioned_files
|
def purge_versioned_files
|
||||||
ohai "Purging files for version #{@cask.version} of Cask #{@cask}"
|
ohai "Purging files for version #{@cask.version} of Cask #{@cask}"
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ describe Hbc::CLI::Upgrade, :cask do
|
|||||||
"outdated/local-caffeine",
|
"outdated/local-caffeine",
|
||||||
"outdated/local-transmission",
|
"outdated/local-transmission",
|
||||||
"outdated/auto-updates",
|
"outdated/auto-updates",
|
||||||
|
"outdated/version-latest",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,6 +104,9 @@ describe Hbc::CLI::Upgrade, :cask do
|
|||||||
auto_updates_path = Hbc.appdir.join("MyFancyApp.app")
|
auto_updates_path = Hbc.appdir.join("MyFancyApp.app")
|
||||||
local_transmission = Hbc::CaskLoader.load("local-transmission")
|
local_transmission = Hbc::CaskLoader.load("local-transmission")
|
||||||
local_transmission_path = Hbc.appdir.join("Transmission.app")
|
local_transmission_path = Hbc.appdir.join("Transmission.app")
|
||||||
|
version_latest = Hbc::CaskLoader.load("version-latest")
|
||||||
|
version_latest_path_1 = Hbc.appdir.join("Caffeine Mini.app")
|
||||||
|
version_latest_path_2 = Hbc.appdir.join("Caffeine Pro.app")
|
||||||
|
|
||||||
expect(local_caffeine).to be_installed
|
expect(local_caffeine).to be_installed
|
||||||
expect(local_caffeine_path).to be_a_directory
|
expect(local_caffeine_path).to be_a_directory
|
||||||
@ -116,6 +120,11 @@ describe Hbc::CLI::Upgrade, :cask do
|
|||||||
expect(local_transmission_path).to be_a_directory
|
expect(local_transmission_path).to be_a_directory
|
||||||
expect(local_transmission.versions).to include("2.60")
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_1).to be_a_directory
|
||||||
|
expect(version_latest_path_2).to be_a_directory
|
||||||
|
expect(version_latest.versions).to include("latest")
|
||||||
|
|
||||||
described_class.run("--greedy")
|
described_class.run("--greedy")
|
||||||
|
|
||||||
expect(local_caffeine).to be_installed
|
expect(local_caffeine).to be_installed
|
||||||
@ -129,6 +138,11 @@ describe Hbc::CLI::Upgrade, :cask do
|
|||||||
expect(local_transmission).to be_installed
|
expect(local_transmission).to be_installed
|
||||||
expect(local_transmission_path).to be_a_directory
|
expect(local_transmission_path).to be_a_directory
|
||||||
expect(local_transmission.versions).to include("2.61")
|
expect(local_transmission.versions).to include("2.61")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_1).to be_a_directory
|
||||||
|
expect(version_latest_path_2).to be_a_directory
|
||||||
|
expect(version_latest.versions).to include("latest")
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'does not include the Casks with "auto_updates true" when the version did not change' do
|
it 'does not include the Casks with "auto_updates true" when the version did not change' do
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
cask 'version-latest' do
|
||||||
|
version :latest
|
||||||
|
sha256 :no_check
|
||||||
|
|
||||||
|
url "file://#{TEST_FIXTURE_DIR}/cask/caffeines.zip"
|
||||||
|
homepage 'http://example.com/local-caffeine'
|
||||||
|
|
||||||
|
app 'Caffeine Mini.app'
|
||||||
|
app 'Caffeine Pro.app'
|
||||||
|
end
|
@ -0,0 +1,10 @@
|
|||||||
|
cask 'version-latest' do
|
||||||
|
version :latest
|
||||||
|
sha256 :no_check
|
||||||
|
|
||||||
|
url "file://#{TEST_FIXTURE_DIR}/cask/caffeines.zip"
|
||||||
|
homepage 'http://example.com/local-caffeine'
|
||||||
|
|
||||||
|
app 'Caffeine Mini.app'
|
||||||
|
app 'Caffeine Pro.app'
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user