Class: Ace::Review::Molecules::FeedbackDirectoryManager
- Inherits:
-
Object
- Object
- Ace::Review::Molecules::FeedbackDirectoryManager
- Defined in:
- lib/ace/review/molecules/feedback_directory_manager.rb
Overview
Manages feedback directory structure and file organization.
Handles creation of feedback directories, archiving of resolved items, and listing of feedback files.
Directory structure:
{base_path}/
feedback/
{id}-{slug}.s.md
{id}-{slug}.s.md
_archived/
{id}-{slug}.s.md
Constant Summary collapse
- FEEDBACK_DIR =
Subdirectory name for feedback files
"feedback"- ARCHIVE_DIR =
Subdirectory name for archived files
"_archived"- FILE_EXTENSION =
File extension for feedback files
".s.md"
Instance Method Summary collapse
-
#archive(file_path) ⇒ Hash
Archive a feedback file by moving it to the _archived subdirectory.
-
#archive_exists?(base_path) ⇒ Boolean
Check if the archive directory exists.
-
#archive_path(base_path) ⇒ String
Get the archive directory path for a base path.
-
#count_files(directory) ⇒ Hash
Count feedback files in a directory.
-
#ensure_archive(base_path) ⇒ String
Ensure the archive directory exists.
-
#ensure_directory(base_path) ⇒ String
Ensure the feedback directory exists.
-
#exists?(base_path) ⇒ Boolean
Check if a feedback directory exists.
-
#feedback_path(base_path) ⇒ String
Get the feedback directory path for a base path.
-
#list_files(directory, include_archived: false) ⇒ Array<String>
List all feedback files in a directory.
Instance Method Details
#archive(file_path) ⇒ Hash
Archive a feedback file by moving it to the _archived subdirectory
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 80 def archive(file_path) validate_archive_inputs(file_path) # Determine the archive destination feedback_dir = File.dirname(file_path) archive_dir = File.join(feedback_dir, ARCHIVE_DIR) filename = File.basename(file_path) dest_path = File.join(archive_dir, filename) # Ensure archive directory exists FileUtils.mkdir_p(archive_dir) # Move file to archive FileUtils.mv(file_path, dest_path) {success: true, path: dest_path} rescue Errno::ENOENT {success: false, error: "File not found: #{file_path}"} rescue Errno::EACCES {success: false, error: "Permission denied: #{file_path}"} rescue => e {success: false, error: "Failed to archive file: #{e.}"} end |
#archive_exists?(base_path) ⇒ Boolean
Check if the archive directory exists
142 143 144 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 142 def archive_exists?(base_path) Dir.exist?(archive_path(base_path)) end |
#archive_path(base_path) ⇒ String
Get the archive directory path for a base path
52 53 54 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 52 def archive_path(base_path) File.join(base_path, FEEDBACK_DIR, ARCHIVE_DIR) end |
#count_files(directory) ⇒ Hash
Count feedback files in a directory
151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 151 def count_files(directory) return {active: 0, archived: 0, total: 0} unless Dir.exist?(directory) active = Dir.glob(File.join(directory, "*#{FILE_EXTENSION}")).count archived = 0 archive_dir = File.join(directory, ARCHIVE_DIR) if Dir.exist?(archive_dir) archived = Dir.glob(File.join(archive_dir, "*#{FILE_EXTENSION}")).count end {active: active, archived: archived, total: active + archived} end |
#ensure_archive(base_path) ⇒ String
Ensure the archive directory exists
70 71 72 73 74 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 70 def ensure_archive(base_path) path = archive_path(base_path) FileUtils.mkdir_p(path) path end |
#ensure_directory(base_path) ⇒ String
Ensure the feedback directory exists
60 61 62 63 64 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 60 def ensure_directory(base_path) path = feedback_path(base_path) FileUtils.mkdir_p(path) path end |
#exists?(base_path) ⇒ Boolean
Check if a feedback directory exists
134 135 136 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 134 def exists?(base_path) Dir.exist?(feedback_path(base_path)) end |
#feedback_path(base_path) ⇒ String
Get the feedback directory path for a base path
44 45 46 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 44 def feedback_path(base_path) File.join(base_path, FEEDBACK_DIR) end |
#list_files(directory, include_archived: false) ⇒ Array<String>
List all feedback files in a directory
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/ace/review/molecules/feedback_directory_manager.rb', line 109 def list_files(directory, include_archived: false) return [] unless Dir.exist?(directory) files = [] # List files in main directory (excluding _archived subdirectory) main_files = Dir.glob(File.join(directory, "*#{FILE_EXTENSION}")) files.concat(main_files) # Include archived files if requested if include_archived archive_dir = File.join(directory, ARCHIVE_DIR) if Dir.exist?(archive_dir) archived_files = Dir.glob(File.join(archive_dir, "*#{FILE_EXTENSION}")) files.concat(archived_files) end end files.sort end |