class Thor::Actions::InjectIntoFile
:nodoc:
def initialize(base, destination, data, config)
def initialize(base, destination, data, config) super(base, destination, { :verbose => true }.merge(config)) data = data.call if data.is_a?(Proc) @replacement = if @config.key?(:after) @flag = @config.delete(:after) @flag + data else @flag = @config.delete(:before) data + @flag end end
def invoke!
def invoke! say_status :inject, config[:verbose] replace!(flag, replacement) end
def replace!(regexp, string)
Adds the content to the file.
def replace!(regexp, string) unless base.options[:pretend] content = File.read(destination) content.gsub!(regexp, string) File.open(destination, 'wb') { |file| file.write(content) } end end
def revoke!
def revoke! say_status :deinject, config[:verbose] replace!(replacement, flag) end