diff --git a/lib/tasks/export_public_exercises.rake b/lib/tasks/export_public_exercises.rake new file mode 100644 index 00000000..aa82c8d1 --- /dev/null +++ b/lib/tasks/export_public_exercises.rake @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +namespace :export_exercises do + desc 'exports all public exercises to codeharbor' + task :public, [:codeharbor_link_id] => [:environment] do |_, args| + codeharbor_link = CodeharborLink.find(args.codeharbor_link_id) + + Exercise.where(public: true).each do |exercise| + puts "Exporting exercise\# #{exercise.id}" + error = ExerciseService::PushExternal.call( + zip: ProformaService::ExportTask.call(exercise: exercise), + codeharbor_link: codeharbor_link + ) + if error.nil? + puts "Successfully exported exercise\# #{exercise.id}" + else + puts "An error occured during export of exercise\# #{exercise.id}: #{error}" + end + end + end +end