Method: RGSS.scripts_to_binary

Defined in:
lib/RGSS/serialize.rb

.scripts_to_binary(dirs, src, dest, options) ⇒ Object



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
# File 'lib/RGSS/serialize.rb', line 209

def self.scripts_to_binary(dirs, src, dest, options)
  formatador = Formatador.new
  src_file = File.join(dirs[:yaml], src)
  dest_file = File.join(dirs[:data], dest)
  raise "Missing #{src}" unless File.exist?(src_file)
  check_time = !options[:force] && File.exist?(dest_file)
  newest_time = File.mtime(src_file) if check_time

  index = load(:load_yaml_file, src_file)
  script_entries = []
  index.each do |entry|
    magic_number, script_name, filename = entry
    code = ''
    if filename
      full_filename = File.join(dirs[:script], filename)
      raise "Missing script file #{filename}" unless File.exist?(full_filename)
      newest_time = [File.mtime(full_filename), newest_time].max if check_time
      code = load(:load_raw_file, full_filename)
    end
    script_entries.push([magic_number, script_name, deflate(code)])
  end
  if check_time && (newest_time - 1) < File.mtime(dest_file)
    formatador.display_line("[yellow]Skipping scripts to binary[/]") if $VERBOSE
  else
    formatador.display_line("[green]Converting scripts to binary[/]") if $VERBOSE
    dump(:dump_data_file, dest_file, script_entries, newest_time, options)
  end
end