class ET::Lesson
Attributes
cwd[R]
Public Class Methods
new(cwd)
click to toggle source
# File lib/et/lesson.rb, line 9 def initialize(cwd) @cwd = cwd end
Public Instance Methods
archive!()
click to toggle source
# File lib/et/lesson.rb, line 13 def archive! if exists? filepath = random_archive_path File.open(filepath, "wb") do |file| Zlib::GzipWriter.wrap(file) do |gz| Gem::Package::TarWriter.new(gz) do |tar| ET::SubmissionFileList.new(dir).each do |file| relative_path = file absolute_path = File.join(dir, file) if FileTest.directory?(absolute_path) tar.mkdir(relative_path, 0755) else file_contents = File.read(absolute_path) tar.add_file_simple("./" + relative_path, 0555, file_contents.bytesize) do |io| io.write(file_contents) end end end end end end filepath else nil end end
dir()
click to toggle source
# File lib/et/lesson.rb, line 42 def dir @dir ||= find_lesson_dir(cwd) end
exists?()
click to toggle source
# File lib/et/lesson.rb, line 50 def exists? !dir.nil? end
slug()
click to toggle source
# File lib/et/lesson.rb, line 46 def slug File.basename(dir) end
Protected Instance Methods
find_lesson_dir(current_dir)
click to toggle source
# File lib/et/lesson.rb, line 60 def find_lesson_dir(current_dir) parent_directory = File.dirname(current_dir) if Config.new(parent_directory).exists? current_dir elsif current_dir == "." || Pathname.new(current_dir).root? nil else find_lesson_dir(File.dirname(current_dir)) end end
random_archive_path()
click to toggle source
# File lib/et/lesson.rb, line 56 def random_archive_path File.join(Dir.mktmpdir, "#{SecureRandom.hex}.tar.gz") end