class Pineapples::Actions::CreateFile
Attributes
content[R]
Public Class Methods
new(generator, target, content, options = {})
click to toggle source
Calls superclass method
# File lib/pineapples/actions/create_file.rb, line 63 def initialize(generator, target, content, options = {}) super(generator, target, options) @content = content end
Public Instance Methods
identical?()
click to toggle source
# File lib/pineapples/actions/create_file.rb, line 68 def identical? exists? && File.binread(target.fullpath) == render end
invoke!()
click to toggle source
# File lib/pineapples/actions/create_file.rb, line 76 def invoke! invoke_with_conflict_check do FileUtils.mkdir_p(File.dirname(target.fullpath)) File.open(target.fullpath, 'wb') { |file| file.write render } end target.given end
render()
click to toggle source
# File lib/pineapples/actions/create_file.rb, line 72 def render @render ||= content.is_a?(Proc) ? content.call : content.to_s end
Protected Instance Methods
force_on_collision?()
click to toggle source
Shows the file collision menu to the user and gets the result.
# File lib/pineapples/actions/create_file.rb, line 108 def force_on_collision? generator.ask_file_collision(target) end
force_or_skip_or_conflict(force, skip, &block)
click to toggle source
# File lib/pineapples/actions/create_file.rb, line 94 def force_or_skip_or_conflict(force, skip, &block) if force say_status :force block.call if execute? elsif skip say_status :skip else say_status :conflict force_or_skip_or_conflict(force_on_collision?, true, &block) end end
on_conflict_behaviour(&block)
click to toggle source
# File lib/pineapples/actions/create_file.rb, line 86 def on_conflict_behaviour(&block) if identical? say_status :identical else force_or_skip_or_conflict(options[:force], options[:skip], &block) end end