Refactor CLI::Home.
This commit is contained in:
parent
1f5828c72d
commit
66e9a060de
@ -1,19 +1,28 @@
|
||||
module Hbc
|
||||
class CLI
|
||||
class Home < Base
|
||||
def self.run(*cask_tokens)
|
||||
if cask_tokens.empty?
|
||||
def self.run(*args)
|
||||
new(*args).run
|
||||
end
|
||||
|
||||
def run
|
||||
casks = @args.map(&CaskLoader.public_method(:load))
|
||||
|
||||
if casks.empty?
|
||||
odebug "Opening project homepage"
|
||||
system "/usr/bin/open", "--", "https://caskroom.github.io/"
|
||||
self.class.open_url "https://caskroom.github.io/"
|
||||
else
|
||||
cask_tokens.each do |cask_token|
|
||||
odebug "Opening homepage for Cask #{cask_token}"
|
||||
cask = CaskLoader.load(cask_token)
|
||||
system "/usr/bin/open", "--", cask.homepage
|
||||
casks.each do |cask|
|
||||
odebug "Opening homepage for Cask #{cask}"
|
||||
self.class.open_url cask.homepage
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.open_url(url)
|
||||
SystemCommand.run!(OS::PATH_OPEN, args: ["--", url])
|
||||
end
|
||||
|
||||
def self.help
|
||||
"opens the homepage of the given Cask"
|
||||
end
|
||||
|
||||
@ -1,46 +1,21 @@
|
||||
# monkeypatch for testing
|
||||
module Hbc
|
||||
class CLI
|
||||
class Home
|
||||
def self.system(*command)
|
||||
system_commands << command
|
||||
end
|
||||
|
||||
def self.reset!
|
||||
@system_commands = []
|
||||
end
|
||||
|
||||
def self.system_commands
|
||||
@system_commands ||= []
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe Hbc::CLI::Home, :cask do
|
||||
before do
|
||||
Hbc::CLI::Home.reset!
|
||||
allow(described_class).to receive(:open_url)
|
||||
end
|
||||
|
||||
it "opens the homepage for the specified Cask" do
|
||||
Hbc::CLI::Home.run("local-caffeine")
|
||||
expect(Hbc::CLI::Home.system_commands).to eq [
|
||||
["/usr/bin/open", "--", "http://example.com/local-caffeine"],
|
||||
]
|
||||
expect(described_class).to receive(:open_url).with("http://example.com/local-caffeine")
|
||||
described_class.run("local-caffeine")
|
||||
end
|
||||
|
||||
it "works for multiple Casks" do
|
||||
Hbc::CLI::Home.run("local-caffeine", "local-transmission")
|
||||
expect(Hbc::CLI::Home.system_commands).to eq [
|
||||
["/usr/bin/open", "--", "http://example.com/local-caffeine"],
|
||||
["/usr/bin/open", "--", "http://example.com/local-transmission"],
|
||||
]
|
||||
expect(described_class).to receive(:open_url).with("http://example.com/local-caffeine")
|
||||
expect(described_class).to receive(:open_url).with("http://example.com/local-transmission")
|
||||
described_class.run("local-caffeine", "local-transmission")
|
||||
end
|
||||
|
||||
it "opens the project page when no Cask is specified" do
|
||||
Hbc::CLI::Home.run
|
||||
expect(Hbc::CLI::Home.system_commands).to eq [
|
||||
["/usr/bin/open", "--", "https://caskroom.github.io/"],
|
||||
]
|
||||
expect(described_class).to receive(:open_url).with("https://caskroom.github.io/")
|
||||
described_class.run
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user