Refactor actions with Action#setup

This commit is contained in:
Thibault Jouan 2014-10-09 01:06:42 +00:00
parent 336b43aaa7
commit 3c4bcc1a4b
6 changed files with 19 additions and 63 deletions

View File

@ -2,27 +2,23 @@ module Producer
module Core module Core
module Actions module Actions
class FileAppend < Action class FileAppend < Action
def setup
@path, @content = arguments
end
def name def name
'file_append' 'file_append'
end end
def apply def apply
fs.file_write path, combined_content fs.file_write @path, combined_content
end
def path
arguments[0]
end
def content
arguments[1]
end end
def combined_content def combined_content
original_content = fs.file_read(path) original_content = fs.file_read(@path)
return content unless original_content return @content unless original_content
original_content + content original_content + @content
end end
end end
end end

View File

@ -2,28 +2,20 @@ module Producer
module Core module Core
module Actions module Actions
class FileReplaceContent < Action class FileReplaceContent < Action
def setup
@path, @pattern, @replacement = arguments
end
def name def name
'file_replace_content' 'file_replace_content'
end end
def apply def apply
fs.file_write path, replaced_content fs.file_write @path, replaced_content
end
def path
arguments[0]
end
def pattern
arguments[1]
end
def replacement
arguments[2]
end end
def replaced_content def replaced_content
fs.file_read(path).gsub pattern, replacement fs.file_read(@path).gsub @pattern, @replacement
end end
end end
end end

View File

@ -2,11 +2,10 @@ module Producer
module Core module Core
module Actions module Actions
class FileWriter < Action class FileWriter < Action
def initialize(env, *args, **options) def setup
super
@path, @content = arguments @path, @content = arguments
@options[:permissions] = @options.delete :mode if @options.key? :mode @options[:permissions] = @options.delete :mode if options.key? :mode
@options[:owner] = @options.delete :user if @options.key? :user @options[:owner] = @options.delete :user if options.key? :user
end end
def name def name

View File

@ -2,8 +2,7 @@ module Producer
module Core module Core
module Actions module Actions
class Mkdir < Action class Mkdir < Action
def initialize(env, *args, **options) def setup
super
@options[:permissions] = @options.delete :mode if @options.key? :mode @options[:permissions] = @options.delete :mode if @options.key? :mode
@options[:owner] = @options.delete :user if @options.key? :user @options[:owner] = @options.delete :user if @options.key? :user
end end

View File

@ -20,18 +20,6 @@ module Producer::Core
end end
end end
describe '#path' do
it 'returns the file path' do
expect(action.path).to eq path
end
end
describe '#content' do
it 'returns the content to append' do
expect(action.content).to eq added_content
end
end
describe '#combined_content' do describe '#combined_content' do
it 'returns original content and added content combined' do it 'returns original content and added content combined' do
expect(action.combined_content).to eq 'some content added' expect(action.combined_content).to eq 'some content added'

View File

@ -21,24 +21,6 @@ module Producer::Core
end end
end end
describe '#path' do
it 'returns the file path' do
expect(action.path).to eq path
end
end
describe '#pattern' do
it 'returns the pattern' do
expect(action.pattern).to eq pattern
end
end
describe '#replacement' do
it 'returns the replacement' do
expect(action.replacement).to eq replacement
end
end
describe '#replaced_content' do describe '#replaced_content' do
it 'returns content with pattern occurrences pattern replaced' do it 'returns content with pattern occurrences pattern replaced' do
expect(action.replaced_content).to eq 'some other content' expect(action.replaced_content).to eq 'some other content'