Class: DocOpsLab::MCP::AssetPackager

Inherits:
Object
  • Object
show all
Defined in:
lib/docopslab/mcp/asset_packager.rb

Overview

Copies MCP resource assets into a packaged location for runtime access.

Direct Known Subclasses

ReleaseHx::MCP::AssetPackager

Instance Method Summary collapse

Constructor Details

#initialize(manifest:, asset_root:) ⇒ AssetPackager

Returns a new instance of AssetPackager.

Raises:

  • (ArgumentError)


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