dev-cmd/edit: handle editing with install_from_api.

Before this change, this would fail every time, even when available on
disk (which was not the case for formulae).

With this change, it will attempt to find it from a tap on disk and only
fail if it cannot be found in any.
This commit is contained in:
Mike McQuaid 2023-01-04 13:51:21 +00:00
parent dc19eba5d9
commit 37be5bea52
No known key found for this signature in database
GPG Key ID: 3338A31AFDB1D829
2 changed files with 17 additions and 6 deletions

View File

@ -206,14 +206,14 @@ module Cask
end end
def self.path(ref) def self.path(ref)
self.for(ref).path self.for(ref, need_path: true).path
end end
def self.load(ref, config: nil) def self.load(ref, config: nil)
self.for(ref).load(config: config) self.for(ref).load(config: config)
end end
def self.for(ref) def self.for(ref, need_path: false)
[ [
FromInstanceLoader, FromInstanceLoader,
FromContentLoader, FromContentLoader,
@ -232,7 +232,7 @@ module Cask
return loader_class.new(ref) return loader_class.new(ref)
end end
if Homebrew::EnvConfig.install_from_api? && Homebrew::API::CaskSource.available?(ref) if Homebrew::EnvConfig.install_from_api? && !need_path && Homebrew::API::CaskSource.available?(ref)
return FromContentLoader.new(Homebrew::API::CaskSource.fetch(ref)) return FromContentLoader.new(Homebrew::API::CaskSource.fetch(ref))
end end

View File

@ -55,15 +55,26 @@ module Homebrew
args.named.to_paths.select do |path| args.named.to_paths.select do |path|
next path if path.exist? next path if path.exist?
message = if args.cask? not_exist_message = if args.cask?
"#{path.basename(".rb")} doesn't exist on disk."
else
"#{path} doesn't exist on disk."
end
message = if Homebrew::EnvConfig.install_from_api?
<<~EOS <<~EOS
#{path.basename(".rb")} doesn't exist on disk. \ #{not_exist_message}
This is expected with HOMEBREW_INSTALL_FROM_API set!
EOS
elsif args.cask?
<<~EOS
#{not_exist_message}
Run #{Formatter.identifier("brew create --cask --set-name #{path.basename(".rb")} $URL")} \ Run #{Formatter.identifier("brew create --cask --set-name #{path.basename(".rb")} $URL")} \
to create a new cask! to create a new cask!
EOS EOS
else else
<<~EOS <<~EOS
#{path} doesn't exist on disk. \ #{not_exist_message}
Run #{Formatter.identifier("brew create --formula --set-name #{path.basename} $URL")} \ Run #{Formatter.identifier("brew create --formula --set-name #{path.basename} $URL")} \
to create a new formula! to create a new formula!
EOS EOS