Class: DocOpsLab::MCP::AssetPackager
- Inherits:
-
Object
- Object
- DocOpsLab::MCP::AssetPackager
- Defined in:
- lib/docopslab/mcp/asset_packager.rb
Overview
Copies MCP resource assets into a packaged location for runtime access.
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(manifest:, asset_root:) ⇒ AssetPackager
constructor
A new instance of AssetPackager.
- #package! ⇒ Object
Constructor Details
#initialize(manifest:, asset_root:) ⇒ AssetPackager
Returns a new instance of AssetPackager.
9 10 11 12 13 14 |
# File 'lib/docopslab/mcp/asset_packager.rb', line 9 def initialize manifest:, asset_root: raise ArgumentError, 'asset_root is required' if asset_root.nil? || asset_root == '' @manifest = manifest @asset_root = asset_root end |
Instance Method Details
#package! ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/docopslab/mcp/asset_packager.rb', line 16 def package! FileUtils.mkdir_p(@asset_root) @manifest.resources.each do |entry| normalized = @manifest.normalize_resource(entry) source_path = normalized[:source_path] target_path = File.join(@asset_root, normalized[:packaged_name]) raise Errno::ENOENT, "Missing MCP resource source: #{source_path}" unless File.exist?(source_path) FileUtils.mkdir_p(File.dirname(target_path)) FileUtils.cp(source_path, target_path) end end |