Class: Kward::ExportPath
- Inherits:
-
Object
- Object
- Kward::ExportPath
- Defined in:
- lib/kward/export_path.rb
Overview
Resolves safe output paths for transcript exports.
Class Method Summary collapse
Class Method Details
.resolve(path, workspace_root:, default_path:, session_dir: nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/kward/export_path.rb', line 7 def self.resolve(path, workspace_root:, default_path:, session_dir: nil) explicit = path.to_s.strip return File.(default_path) if explicit.empty? resolved = File.(explicit, workspace_root) allowed_roots = [workspace_root, session_dir].compact.map { |root| Pathname.new(root). } = Pathname.new(resolved). unless allowed_roots.any? { |root| inside?(, root) } raise ArgumentError, "export path outside workspace or session directory: #{path}" end parent = .dirname raise Errno::ENOENT, parent.to_s unless parent.directory? raise ArgumentError, "export path outside workspace or session directory: #{path}" if parent.symlink? resolved end |