class Dato::Dump::Operation::AddToDataFile

Attributes

context[R]
format[R]
path[R]
value[R]

Public Class Methods

new(context, path, format, value) click to toggle source
# File lib/dato/dump/operation/add_to_data_file.rb, line 11
def initialize(context, path, format, value)
  @context = context
  @path = path
  @format = format
  @value = value
end

Public Instance Methods

perform() click to toggle source
# File lib/dato/dump/operation/add_to_data_file.rb, line 18
def perform
  complete_path = File.join(context.path, path)
  FileUtils.mkdir_p(File.dirname(complete_path))

  content_to_add = Format.dump(format, value)

  old_content = if File.exist? complete_path
                  ::File.read(complete_path)
                else
                  ""
                end

  new_content = old_content.sub(
    /\n*(#\s*datocms:start.*#\s*datocms:end|\Z)/m,
    "\n\n# datocms:start\n#{content_to_add}\n# datocms:end",
  )

  File.open(complete_path, "w") do |f|
    f.write new_content
  end
end