Use saved cask config for reinstall/upgrade/uninstall.
This commit is contained in:
parent
fda6e0cab3
commit
190ff7558a
@ -94,11 +94,14 @@ module Cask
|
|||||||
[executable, arguments]
|
[executable, arguments]
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :cask, :config
|
attr_reader :cask
|
||||||
|
|
||||||
def initialize(cask)
|
def initialize(cask)
|
||||||
@cask = cask
|
@cask = cask
|
||||||
@config = cask.config
|
end
|
||||||
|
|
||||||
|
def config
|
||||||
|
cask.config
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
|
|||||||
@ -11,7 +11,7 @@ module Cask
|
|||||||
extend Searchable
|
extend Searchable
|
||||||
include Metadata
|
include Metadata
|
||||||
|
|
||||||
attr_reader :token, :sourcefile_path
|
attr_reader :token, :sourcefile_path, :config
|
||||||
|
|
||||||
def self.each
|
def self.each
|
||||||
return to_enum unless block_given?
|
return to_enum unless block_given?
|
||||||
@ -31,15 +31,21 @@ module Cask
|
|||||||
@tap
|
@tap
|
||||||
end
|
end
|
||||||
|
|
||||||
def initialize(token, sourcefile_path: nil, tap: nil, config: nil, &block)
|
def initialize(token, sourcefile_path: nil, tap: nil, &block)
|
||||||
@token = token
|
@token = token
|
||||||
@sourcefile_path = sourcefile_path
|
@sourcefile_path = sourcefile_path
|
||||||
@tap = tap
|
@tap = tap
|
||||||
@config = config
|
@block = block
|
||||||
@dsl = DSL.new(self)
|
self.config = Config.for_cask(self)
|
||||||
return unless block_given?
|
end
|
||||||
|
|
||||||
@dsl.instance_eval(&block)
|
def config=(config)
|
||||||
|
@config = config
|
||||||
|
|
||||||
|
@dsl = DSL.new(self)
|
||||||
|
return unless @block
|
||||||
|
|
||||||
|
@dsl.instance_eval(&@block)
|
||||||
@dsl.language_eval
|
@dsl.language_eval
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -77,14 +83,14 @@ module Cask
|
|||||||
metadata_master_container_path.join(*installed_version, "Casks", "#{token}.rb")
|
metadata_master_container_path.join(*installed_version, "Casks", "#{token}.rb")
|
||||||
end
|
end
|
||||||
|
|
||||||
def config
|
|
||||||
@config ||= Config.for_cask(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
def config_path
|
def config_path
|
||||||
metadata_master_container_path/"dirs.json"
|
metadata_master_container_path/"dirs.json"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def caskroom_path
|
||||||
|
@caskroom_path ||= Caskroom.path.join(token)
|
||||||
|
end
|
||||||
|
|
||||||
def outdated?(greedy = false)
|
def outdated?(greedy = false)
|
||||||
!outdated_versions(greedy).empty?
|
!outdated_versions(greedy).empty?
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
require "cask/config"
|
||||||
|
|
||||||
module Cask
|
module Cask
|
||||||
class Cmd
|
class Cmd
|
||||||
class Upgrade < AbstractCommand
|
class Upgrade < AbstractCommand
|
||||||
@ -44,13 +46,17 @@ module Cask
|
|||||||
|
|
||||||
old_cask = CaskLoader.load(old_cask.installed_caskfile)
|
old_cask = CaskLoader.load(old_cask.installed_caskfile)
|
||||||
|
|
||||||
|
old_config = old_cask.config
|
||||||
|
|
||||||
old_cask_installer =
|
old_cask_installer =
|
||||||
Installer.new(old_cask, binaries: binaries?,
|
Installer.new(old_cask, binaries: binaries?,
|
||||||
verbose: verbose?,
|
verbose: verbose?,
|
||||||
force: force?,
|
force: force?,
|
||||||
upgrade: true)
|
upgrade: true)
|
||||||
|
|
||||||
new_cask = CaskLoader.load(old_cask.to_s)
|
new_cask = CaskLoader.load(old_cask.token)
|
||||||
|
|
||||||
|
new_cask.config = Config.global.merge(old_config)
|
||||||
|
|
||||||
new_cask_installer =
|
new_cask_installer =
|
||||||
Installer.new(new_cask, binaries: binaries?,
|
Installer.new(new_cask, binaries: binaries?,
|
||||||
|
|||||||
@ -88,7 +88,7 @@ module Cask
|
|||||||
end
|
end
|
||||||
|
|
||||||
def merge(other)
|
def merge(other)
|
||||||
self.class.new(**other.explicit.merge(explicit))
|
self.class.new(explicit: other.explicit.merge(explicit))
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_json(*args)
|
def to_json(*args)
|
||||||
|
|||||||
@ -57,7 +57,6 @@ module Cask
|
|||||||
:appcast,
|
:appcast,
|
||||||
:artifacts,
|
:artifacts,
|
||||||
:auto_updates,
|
:auto_updates,
|
||||||
:caskroom_path,
|
|
||||||
:caveats,
|
:caveats,
|
||||||
:conflicts_with,
|
:conflicts_with,
|
||||||
:container,
|
:container,
|
||||||
@ -226,7 +225,7 @@ module Cask
|
|||||||
end
|
end
|
||||||
|
|
||||||
def caskroom_path
|
def caskroom_path
|
||||||
@caskroom_path ||= Caskroom.path.join(token)
|
@cask.caskroom_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def staged_path
|
def staged_path
|
||||||
|
|||||||
@ -4,6 +4,7 @@ require "formula_installer"
|
|||||||
require "unpack_strategy"
|
require "unpack_strategy"
|
||||||
|
|
||||||
require "cask/cask_dependencies"
|
require "cask/cask_dependencies"
|
||||||
|
require "cask/config"
|
||||||
require "cask/download"
|
require "cask/download"
|
||||||
require "cask/staged"
|
require "cask/staged"
|
||||||
require "cask/verify"
|
require "cask/verify"
|
||||||
@ -79,6 +80,8 @@ module Cask
|
|||||||
def install
|
def install
|
||||||
odebug "Cask::Installer#install"
|
odebug "Cask::Installer#install"
|
||||||
|
|
||||||
|
old_config = @cask.config
|
||||||
|
|
||||||
if @cask.installed? && !force? && !reinstall? && !upgrade?
|
if @cask.installed? && !force? && !reinstall? && !upgrade?
|
||||||
raise CaskAlreadyInstalledError, @cask
|
raise CaskAlreadyInstalledError, @cask
|
||||||
end
|
end
|
||||||
@ -92,6 +95,9 @@ module Cask
|
|||||||
oh1 "Installing Cask #{Formatter.identifier(@cask)}"
|
oh1 "Installing Cask #{Formatter.identifier(@cask)}"
|
||||||
opoo "macOS's Gatekeeper has been disabled for this Cask" unless quarantine?
|
opoo "macOS's Gatekeeper has been disabled for this Cask" unless quarantine?
|
||||||
stage
|
stage
|
||||||
|
|
||||||
|
@cask.config = Config.global.merge(old_config)
|
||||||
|
|
||||||
install_artifacts
|
install_artifacts
|
||||||
|
|
||||||
unless @cask.tap&.private?
|
unless @cask.tap&.private?
|
||||||
|
|||||||
@ -2,7 +2,7 @@ describe Cask::Artifact::Installer, :cask do
|
|||||||
subject(:installer) { described_class.new(cask, **args) }
|
subject(:installer) { described_class.new(cask, **args) }
|
||||||
|
|
||||||
let(:staged_path) { mktmpdir }
|
let(:staged_path) { mktmpdir }
|
||||||
let(:cask) { instance_double(Cask::Cask, staged_path: staged_path, config: nil) }
|
let(:cask) { instance_double(Cask::Cask, staged_path: staged_path) }
|
||||||
|
|
||||||
let(:command) { SystemCommand }
|
let(:command) { SystemCommand }
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
require_relative "shared_examples/invalid_option"
|
require_relative "shared_examples/invalid_option"
|
||||||
|
|
||||||
describe Cask::Cmd::Audit, :cask do
|
describe Cask::Cmd::Audit, :cask do
|
||||||
let(:cask) { Cask::Cask.new(nil) }
|
let(:cask) { Cask::Cask.new("cask") }
|
||||||
|
|
||||||
it_behaves_like "a command that handles invalid options"
|
it_behaves_like "a command that handles invalid options"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user