spec/support/macros/resource_helpers.rb in belajar-0.1.1 vs spec/support/macros/resource_helpers.rb in belajar-1.0.0

- old
+ new

@@ -1,14 +1,14 @@ -module ResourceHelpers - require 'fileutils' - require 'zip' +require 'fileutils' +require 'zip' +module ResourceHelpers def prepare_courses - FileUtils.mkdir_p(courses_basepath) unless Dir.exist?(courses_basepath) + create_directory(courses_basepath) course_dir_names.each do |course| - chapter_dir_names.each do |chapter| + chapter_dir_names.each do |_| unit_dirs(course).each do |units| units.each do |unit| create_directory(unit) create_file(unit, task_name, task_file_content) create_file(unit, reference_solution_name, solution_content) @@ -27,80 +27,79 @@ end def prepare_solutions all_solution_file_paths.each do |path| base_dir = File.dirname(path) - name = File.basename(path) + name = File.basename(path) create_file(base_dir, name, solution_content) end end - def prepare_download(zip_file_name, options = {}) + def prepare_download(zip_file_name, multiple_courses: false) zip_file_path = File.join(courses_basepath, zip_file_name) + create_directory(File.dirname(zip_file_path)) - unless Dir.exist?(File.dirname(zip_file_path)) - FileUtils.makedirs(File.dirname(zip_file_path)) - end - Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file| Dir[File.join(courses_basepath, '**', '**')].each do |file| - if course_match?(file, options[:multiple_courses]) - zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true } - end + next unless course_match?(file, multiple_courses) + zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true } end end File.read(zip_file_path) end def prepare_github_download(zip_file_name) zip_file_path = File.join(courses_basepath, zip_file_name) + create_directory(File.dirname(zip_file_path)) - unless Dir.exist?(File.dirname(zip_file_path)) - FileUtils.makedirs(File.dirname(zip_file_path)) - end - Zip::File.open(zip_file_path, Zip::File::CREATE) do |zip_file| Dir[File.join(courses_basepath, '**', '**')].each do |file| - if file.match(/.*\-master/) - zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true } - end + next unless file =~ /.*\-master/ + zip_file.add(file.sub(courses_basepath, '')[1..-1], file) { true } end end File.read(zip_file_path) end def course_match?(name, multiple_courses) + first_course_matches = name.match(course_dirs.first) + if multiple_courses - name.match(course_dirs.first) || name.match(course_dirs.second) + first_course_matches || name.match(course_dirs[1]) else - name.match(course_dirs.first) + first_course_matches end end def cleanup_download(zip_file_name) directory = course_dirs.first - zip_file = File.join(File.dirname(directory), zip_file_name) - FileUtils.rm(zip_file) if File.exist?(zip_file) + zip_file = File.join(File.dirname(directory), zip_file_name) + remove_file(zip_file) end def cleanup_temp_data - FileUtils.remove_dir(temp_basepath) if Dir.exist?(temp_basepath) + remove_directory(temp_basepath) end + def remove_directory(dir_path) + FileUtils.remove_dir(dir_path) if Dir.exist?(dir_path) + end + def create_directory(dir_path) - FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path) + FileUtils.makedirs(dir_path) unless Dir.exist?(dir_path) end def create_file(base_dir, name, content) - create_directory(base_dir) unless Dir.exist?(base_dir) + create_directory(base_dir) file_path = File.join(base_dir, name) + File.open(file_path, 'w') { |f| f.puts content } + end - if Dir.exist?(base_dir) - File.open(file_path, 'w') { |f| f.puts content } - end + def remove_file(file) + FileUtils.rm(file) if File.exist?(file) end def available_courses course_dirs.map do |path| Belajar::Course.new(path) @@ -112,12 +111,12 @@ Belajar::Chapter.new(path) end end def available_units(course_name, chapter_name) - units = unit_dirs(course_name).map do |units| - units.map do |path| + units = unit_dirs(course_name).map do |unit_dir| + unit_dir.map do |path| next unless path.split('/')[-2] == chapter_name Belajar::Unit.new(path) end end @@ -126,11 +125,11 @@ def available_task(course_name, chapter_name, unit_name) task = unit_dirs(course_name).map do |units| units.map do |path| split = path.split('/') - next if (split[-2] != chapter_name || split[-1] != unit_name) + next if split[-2] != chapter_name || split[-1] != unit_name Belajar::Task.new(path) end end @@ -139,10 +138,10 @@ def available_reference_solution(course_name, chapter_name, unit_name) solution = unit_dirs(course_name).map do |units| units.map do |path| split = path.split('/') - next if (split[-2] != chapter_name || split[-1] != unit_name) + next if split[-2] != chapter_name || split[-1] != unit_name Belajar::ReferenceSolution.new(path) end end