diff --git a/lib/measures/from_honeybee_model/measure.rb b/lib/measures/from_honeybee_model/measure.rb index 2de5a036..202133aa 100644 --- a/lib/measures/from_honeybee_model/measure.rb +++ b/lib/measures/from_honeybee_model/measure.rb @@ -34,6 +34,9 @@ require 'to_openstudio' +require 'fileutils' +require 'pathname' + # start the measure class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure # human readable name @@ -96,6 +99,7 @@ def run(model, runner, user_arguments) honeybee_model = Honeybee::Model.read_from_disk(model_json) if schedule_csv_dir && !schedule_csv_dir.empty? + schedule_csv_dir = Pathname.new(schedule_csv_dir).cleanpath if !Dir.exist?(schedule_csv_dir) runner.registerError("Directory for exported CSV Schedules does not exist '#{schedule_csv_dir}'") return false @@ -106,6 +110,18 @@ def run(model, runner, user_arguments) STDOUT.flush honeybee_model.to_openstudio_model(model) STDOUT.flush + + generated_files_dir = "#{runner.workflow.absoluteRootDir}/generated_files" + if schedule_csv_dir && !schedule_csv_dir.empty? + if Dir.exist?(schedule_csv_dir) + runner.registerInfo("Copying exported schedules from '#{schedule_csv_dir}' to '#{generated_files_dir}'") + FileUtils.mkdir_p(generated_files_dir) + Dir.glob("#{schedule_csv_dir}/*.csv").each do |file| + FileUtils.cp(file, generated_files_dir) + end + end + end + return true end end diff --git a/lib/to_openstudio/model.rb b/lib/to_openstudio/model.rb index 7c4d3d02..2e0b3d29 100644 --- a/lib/to_openstudio/model.rb +++ b/lib/to_openstudio/model.rb @@ -49,6 +49,13 @@ def self.write_schedule_csv(schedule_csv_dir, schedule_csv) end file.puts row.join(',') end + + # make sure data is written to the disk one way or the other + begin + file.fsync + rescue + file.flush + end end end end