Class: Pho::FileManagement::AbstractFileManager
- Inherits:
-
Object
- Object
- Pho::FileManagement::AbstractFileManager
- Defined in:
- lib/pho/file_management.rb
Overview
TODO: move files into hidden directory
Direct Known Subclasses
Constant Summary collapse
- OK =
"ok".freeze
- FAIL =
"fail".freeze
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Returns the value of attribute dir.
-
#store(recursive = false) ⇒ Object
readonly
Store all files that match the file name in directory.
Instance Method Summary collapse
-
#failures(recursive = false) ⇒ Object
List failures.
- #get_fail_file_for(filename) ⇒ Object
- #get_ok_file_for(filename) ⇒ Object
-
#initialize(store, dir, ok_suffix = OK, fail_suffix = FAIL, sleep = 1) ⇒ AbstractFileManager
constructor
A new instance of AbstractFileManager.
-
#new_files(recursive = false) ⇒ Object
List any new files in the directory.
-
#reset ⇒ Object
Reset the directory to clear out any previous statuses.
-
#retry_failures ⇒ Object
Retry anything known to have failed.
-
#successes(recursive = false) ⇒ Object
List successes.
-
#summary(recursive = false) ⇒ Object
Summarize the state of the collection to the provided IO object Creates a simple report.
Constructor Details
#initialize(store, dir, ok_suffix = OK, fail_suffix = FAIL, sleep = 1) ⇒ AbstractFileManager
Returns a new instance of AbstractFileManager.
14 15 16 17 18 19 20 |
# File 'lib/pho/file_management.rb', line 14 def initialize(store, dir, ok_suffix=OK, fail_suffix=FAIL, sleep=1) @store = store @dir = dir @sleep = sleep @ok_suffix = ok_suffix @fail_suffix = fail_suffix end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Returns the value of attribute dir.
8 9 10 |
# File 'lib/pho/file_management.rb', line 8 def dir @dir end |
#store(recursive = false) ⇒ Object (readonly)
Store all files that match the file name in directory
23 24 25 |
# File 'lib/pho/file_management.rb', line 23 def store @store end |
Instance Method Details
#failures(recursive = false) ⇒ Object
List failures
68 69 70 71 72 73 74 75 76 |
# File 'lib/pho/file_management.rb', line 68 def failures(recursive=false) fails = Array.new list(recursive).each do |file| if File.extname(file) != ".#{@fail_suffix}" && File.extname(file) != ".#{@ok_suffix}" fails << file if File.exists?( get_fail_file_for(file) ) end end return fails end |
#get_fail_file_for(filename) ⇒ Object
100 101 102 103 |
# File 'lib/pho/file_management.rb', line 100 def get_fail_file_for(filename) ext = File.extname(filename) return filename.gsub(/#{ext}$/, ".#{@fail_suffix}") end |
#get_ok_file_for(filename) ⇒ Object
105 106 107 108 |
# File 'lib/pho/file_management.rb', line 105 def get_ok_file_for(filename) ext = File.extname(filename) return filename.gsub(/#{ext}$/, ".#{@ok_suffix}") end |
#new_files(recursive = false) ⇒ Object
List any new files in the directory
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/pho/file_management.rb', line 53 def new_files(recursive=false) newfiles = Array.new list(recursive).each do |file| ok_file = get_ok_file_for(file) fail_file = get_fail_file_for(file) if !( File.exists?(ok_file) or File.exists?(fail_file) ) newfiles << file end end return newfiles end |
#reset ⇒ Object
Reset the directory to clear out any previous statuses
43 44 45 46 47 48 49 50 |
# File 'lib/pho/file_management.rb', line 43 def reset() Dir.glob( File.join(@dir, "*.#{@fail_suffix}") ).each do |file| File.delete(file) end Dir.glob( File.join(@dir, "*.#{@ok_suffix}") ).each do |file| File.delete(file) end end |
#retry_failures ⇒ Object
Retry anything known to have failed
32 33 34 35 36 37 38 39 40 |
# File 'lib/pho/file_management.rb', line 32 def retry_failures() retries = failures() retries.each do |filename| File.delete( get_fail_file_for(filename) ) #store it file = File.new(filename) store_file(file, filename) end end |
#successes(recursive = false) ⇒ Object
List successes
79 80 81 82 83 84 85 86 87 |
# File 'lib/pho/file_management.rb', line 79 def successes(recursive=false) successes = Array.new list(recursive).each do |file| if File.extname(file) != ".#{@fail_suffix}" && File.extname(file) != ".#{@ok_suffix}" successes << file if File.exists?( get_ok_file_for(file) ) end end return successes end |
#summary(recursive = false) ⇒ Object
Summarize the state of the collection to the provided IO object Creates a simple report
91 92 93 94 95 96 97 98 |
# File 'lib/pho/file_management.rb', line 91 def summary(recursive=false) failures = failures(recursive) successes = successes(recursive) newfiles = new_files(recursive) total = failures.size + successes.size + newfiles.size summary = "#{@dir} #{recursive ? " and sub-directories" : ""} contains #{total} files: #{successes.size} stored, #{failures.size} failed, #{newfiles.size} new" return summary end |