esp-idf-lib/devtools/spec/metadata.rb

Mon, 17 Apr 2023 16:53:38 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 17 Apr 2023 16:53:38 +0200
changeset 33
5bd5f6668f71
parent 1
1c9894662795
permissions
-rw-r--r--

Removed all BLE code. It is not usefull in this application.

# frozen_string_literal: true

require_relative "component"

# A class that represents metadaata, `.eil.yml`
class Metadata
  # path: path to component root directory
  def initialize(path)
    raise ArgumentError, "path is missing" unless path

    @path = path
    @name = File.basename(path)
    raise ArgumentError, "path `#{path}` does not have basename" if @name.empty?

    metadata
  end

  attr_reader :path, :name

  def metadata
    return @metadata if @metadata

    file = File.join(path, ".eil.yml")
    @metadata = YAML.safe_load(File.read(file))
  rescue StandardError => e
    warn "failed to open `#{file}`. does component `#{File.basename(path)}` have `.eil.yml` file?"
    raise e
  end

  def components?
    metadata.key?("components")
  end

  def components
    metadata["components"].map { |c| Component.new(c) }
  end

  def to_s
    name
  end
end

mercurial