Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move cask/cmd/info to cask/info #14839

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 0 additions & 1 deletion Library/Homebrew/cask/cmd.rb
Expand Up @@ -12,7 +12,6 @@
require "cask/cmd/abstract_command"
require "cask/cmd/audit"
require "cask/cmd/fetch"
require "cask/cmd/info"
require "cask/cmd/install"
require "cask/cmd/list"
require "cask/cmd/reinstall"
Expand Down
154 changes: 0 additions & 154 deletions Library/Homebrew/cask/cmd/info.rb

This file was deleted.

101 changes: 101 additions & 0 deletions Library/Homebrew/cask/info.rb
@@ -0,0 +1,101 @@
# typed: false
# frozen_string_literal: true

require "json"

module Cask
#
# @api private
class Info
def self.get_info(cask)
require "cask/installer"

output = +"#{title_info(cask)}\n"
output << "#{Formatter.url(cask.homepage)}\n" if cask.homepage
output << installation_info(cask)
repo = repo_info(cask)
output << "#{repo}\n" if repo
output << name_info(cask)
output << desc_info(cask)
language = language_info(cask)
output << language if language
output << "#{artifact_info(cask)}\n"
caveats = Installer.caveats(cask)
output << caveats if caveats
output
end

def self.info(cask)
puts get_info(cask)
::Utils::Analytics.cask_output(cask, args: Homebrew::CLI::Args.new)
end

def self.title_info(cask)
title = "#{oh1_title(cask.token)}: #{cask.version}"
title += " (auto_updates)" if cask.auto_updates
title
end

def self.installation_info(cask)
return "Not installed\n" unless cask.installed?

install_info = +""
cask.versions.each do |version|
versioned_staged_path = cask.caskroom_path.join(version)
path_details = if versioned_staged_path.exist?
versioned_staged_path.abv
else
Formatter.error("does not exist")
end
install_info << "#{versioned_staged_path} (#{path_details})\n"
end
install_info.freeze
end

def self.name_info(cask)
<<~EOS
#{ohai_title((cask.name.size > 1) ? "Names" : "Name")}
#{cask.name.empty? ? Formatter.error("None") : cask.name.join("\n")}
EOS
end

def self.desc_info(cask)
<<~EOS
#{ohai_title("Description")}
#{cask.desc.nil? ? Formatter.error("None") : cask.desc}
EOS
end

def self.language_info(cask)
return if cask.languages.empty?

<<~EOS
#{ohai_title("Languages")}
#{cask.languages.join(", ")}
EOS
end

def self.repo_info(cask)
return if cask.tap.nil?

url = if cask.tap.custom_remote? && !cask.tap.remote.nil?
cask.tap.remote
else
"#{cask.tap.default_remote}/blob/HEAD/Casks/#{cask.token}.rb"
end

"From: #{Formatter.url(url)}"
end

def self.artifact_info(cask)
artifact_output = ohai_title("Artifacts").dup
cask.artifacts.each do |artifact|
next unless artifact.respond_to?(:install_phase)
next unless DSL::ORDINARY_ARTIFACT_CLASSES.include?(artifact.class)

artifact_output << "\n" << artifact.to_s
end
artifact_output.freeze
end
end
end
5 changes: 2 additions & 3 deletions Library/Homebrew/cmd/info.rb
Expand Up @@ -373,9 +373,8 @@ def dep_display_s(dep)
end

def info_cask(cask, args:)
require "cask/cmd"
require "cask/cmd/info"
require "cask/info"

Cask::Cmd::Info.info(cask)
Cask::Info.info(cask)
end
end
4 changes: 2 additions & 2 deletions Library/Homebrew/extend/os/mac/missing_formula.rb
Expand Up @@ -2,7 +2,7 @@
# frozen_string_literal: true

require "cask/cmd/abstract_command"
require "cask/cmd/info"
require "cask/info"
require "cask/cask_loader"
require "cask/caskroom"

Expand Down Expand Up @@ -48,7 +48,7 @@ def suggest_command(name, command)
suggestion = <<~EOS
Found a cask named "#{name}" instead.

#{Cask::Cmd::Info.get_info(cask)}
#{Cask::Info.get_info(cask)}
EOS
else
return
Expand Down
Expand Up @@ -3,10 +3,10 @@

require "utils"

describe Cask::Cmd::Info, :cask do
describe Cask::Info, :cask do
it "displays some nice info about the specified Cask" do
expect {
described_class.run("local-transmission")
described_class.info(Cask::CaskLoader.load("local-transmission"))
}.to output(<<~EOS).to_stdout
==> local-transmission: 2.61
https://transmissionbt.com/
Expand All @@ -23,7 +23,7 @@

it "prints auto_updates if the Cask has `auto_updates true`" do
expect {
described_class.run("with-auto-updates")
described_class.info(Cask::CaskLoader.load("with-auto-updates"))
}.to output(<<~EOS).to_stdout
==> with-auto-updates: 1.0 (auto_updates)
https://brew.sh/autoupdates
Expand All @@ -38,43 +38,9 @@
EOS
end

describe "given multiple Casks" do
let(:expected_output) {
<<~EOS
==> local-caffeine: 1.2.3
https://brew.sh/
Not installed
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/local-caffeine.rb
==> Name
None
==> Description
None
==> Artifacts
Caffeine.app (App)

==> local-transmission: 2.61
https://transmissionbt.com/
Not installed
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/local-transmission.rb
==> Name
Transmission
==> Description
BitTorrent client
==> Artifacts
Transmission.app (App)
EOS
}

it "displays the info" do
expect {
described_class.run("local-caffeine", "local-transmission")
}.to output(expected_output).to_stdout
end
end

it "prints caveats if the Cask provided one" do
expect {
described_class.run("with-caveats")
described_class.info(Cask::CaskLoader.load("with-caveats"))
}.to output(<<~EOS).to_stdout
==> with-caveats: 1.2.3
https://brew.sh/
Expand All @@ -101,7 +67,7 @@

it 'does not print "Caveats" section divider if the caveats block has no output' do
expect {
described_class.run("with-conditional-caveats")
described_class.info(Cask::CaskLoader.load("with-conditional-caveats"))
}.to output(<<~EOS).to_stdout
==> with-conditional-caveats: 1.2.3
https://brew.sh/
Expand All @@ -118,7 +84,7 @@

it "prints languages specified in the Cask" do
expect {
described_class.run("with-languages")
described_class.info(Cask::CaskLoader.load("with-languages"))
}.to output(<<~EOS).to_stdout
==> with-languages: 1.2.3
https://brew.sh/
Expand All @@ -137,7 +103,7 @@

it 'does not print "Languages" section divider if the languages block has no output' do
expect {
described_class.run("without-languages")
described_class.info(Cask::CaskLoader.load("without-languages"))
}.to output(<<~EOS).to_stdout
==> without-languages: 1.2.3
https://brew.sh/
Expand Down