Method: PlainTextExtractorDSL#extract_content_from_archive_with
- Defined in:
- lib/picolena/templates/lib/plain_text_extractor_dsl.rb
#extract_content_from_archive_with(unpack_command) ⇒ Object
Unpack an archive and extract content from every supported file
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/picolena/templates/lib/plain_text_extractor_dsl.rb', line 76 def extract_content_from_archive_with(unpack_command) #FIXME: Cleaner code needed! @command=lambda {|source| begin global_temp_dir = File.join(Dir::tmpdir, 'picolena_archive_temp') specific_temp_dir = File.join(global_temp_dir, source.base26_hash) FileUtils.mkpath specific_temp_dir specific_unpack_command=unpack_command.sub('SOURCE','"'<<source<<'"').sub(/TE?MPDIR/,'"'<<specific_temp_dir<<'"') silently_execute(specific_unpack_command) Dir["#{specific_temp_dir}/**/*"].select{|f| File.file?(f)}.map{|filename| content=PlainTextExtractor.extract_content_from(filename) rescue "---" ["##"<<filename.sub(specific_temp_dir,'').gsub('/', '>'), content] }.join("\n") ensure FileUtils.remove_entry_secure(specific_temp_dir) FileUtils.rmdir(global_temp_dir) rescue "not empty" end } (@dependencies||=[])<<unpack_command.dependencies end |