Browse Source
the create command opens up an editor with template to get started remove --create override flag from `brew cask edit` hopefully this will be more straightforward for contributors refs #306
5 changed files with 111 additions and 9 deletions
@ -0,0 +1,34 @@ |
|||
module Cask::CLI::Create |
|||
def self.run(*arguments) |
|||
cask_name, *_ = *arguments |
|||
cask_path = Cask.path(cask_name) |
|||
|
|||
if cask_path.exist? |
|||
raise CaskAlreadyCreatedError.new cask_name |
|||
end |
|||
|
|||
File.open(cask_path, 'w') do |f| |
|||
f.write template(cask_name) |
|||
end |
|||
|
|||
exec_editor cask_path |
|||
end |
|||
|
|||
def self.template(cask_name); |
|||
cask_class = cask_name.split('-').map(&:capitalize).join |
|||
<<-EOS.undent |
|||
class #{cask_class} < Cask |
|||
url '' |
|||
homepage '' |
|||
version '' |
|||
sha1 '' |
|||
link :app, '' |
|||
end |
|||
EOS |
|||
end |
|||
|
|||
def self.help |
|||
"creates a cask of the given name and opens it in an editor" |
|||
end |
|||
end |
|||
|
@ -0,0 +1,64 @@ |
|||
require 'test_helper' |
|||
|
|||
module RecordCreateorCalls |
|||
def exec_editor(*command) |
|||
editor_commands << command |
|||
end |
|||
|
|||
def reset! |
|||
@editor_commands = [] |
|||
end |
|||
|
|||
def editor_commands |
|||
@editor_commands ||= [] |
|||
end |
|||
end |
|||
|
|||
module Cask::CLI::Create |
|||
extend RecordCreateorCalls |
|||
end |
|||
|
|||
describe Cask::CLI::Create do |
|||
before { Cask::CLI::Create.reset! } |
|||
|
|||
after { |
|||
%w[ new-cask additional-cask another-cask ].each do |cask| |
|||
path = Cask.path(cask) |
|||
path.delete if path.exist? |
|||
end |
|||
} |
|||
|
|||
it 'opens the editor for the specified cask' do |
|||
Cask::CLI::Create.run('new-cask') |
|||
Cask::CLI::Create.editor_commands.must_equal [ |
|||
[Cask.path('new-cask')] |
|||
] |
|||
end |
|||
|
|||
it 'drops a template down for the specified cask' do |
|||
Cask::CLI::Create.run('new-cask') |
|||
template = File.read(Cask.path('new-cask')) |
|||
template.must_equal <<-TEMPLATE.undent |
|||
class NewCask < Cask |
|||
url '' |
|||
homepage '' |
|||
version '' |
|||
sha1 '' |
|||
link :app, '' |
|||
end |
|||
TEMPLATE |
|||
end |
|||
|
|||
it 'throws away additional arguments and uses the first' do |
|||
Cask::CLI::Create.run('additional-cask', 'another-cask') |
|||
Cask::CLI::Create.editor_commands.must_equal [ |
|||
[Cask.path('additional-cask')] |
|||
] |
|||
end |
|||
|
|||
it 'raises an exception when the cask already exists' do |
|||
lambda { |
|||
Cask::CLI::Create.run('caffeine') |
|||
}.must_raise CaskAlreadyCreatedError |
|||
end |
|||
end |
Loading…
Reference in new issue