Sha256: a71c6df5ecaada723385d127441392292b2c49cafe391f7f40006ab08b4200f8

Contents?: true

Size: 1.65 KB

Versions: 3

Compression:

Stored size: 1.65 KB

Contents

# encoding: UTF-8

module Tetra
  # represents a prebuilt package dependency from a Maven local repo
  # in a kit
  class MavenKitItem
    # implement to_spec
    include SpecGenerator
    attr_reader :project
    attr_reader :package_name
    attr_reader :spec_dir
    attr_reader :template_spec_name
    attr_reader :conflicts

    # implement to_archive
    include Archiver
    attr_reader :source_dir
    attr_reader :source_paths
    attr_reader :destination_dir

    # template-specific attributes
    attr_reader :provides_symbol
    attr_reader :provides_version
    attr_reader :install_dir

    def initialize(project, pom, source_paths)
      path, _ = path_split(pom)
      rest, version = path_split(path)
      group_directory, artifact_id = path_split(rest)
      group_id = path_to_group(group_directory)

      @project = project
      @package_name = "kit-item-#{group_id.gsub(".", "-")}-#{artifact_id}-#{version}"
      @spec_dir = "kit"
      @template_spec_name = "kit_item.spec"
      @conflicts = false

      @provides_symbol = "tetra-mvn(#{group_id}:#{artifact_id})"
      @provides_version = version
      @install_dir = "m2"

      @source_dir = File.join("kit", "m2")
      @source_paths = source_paths
      @destination_dir = @package_name
    end

    private

    # splits a path string into a [head, tail] string couple
    def path_split(path)
      Pathname.new(path).split.map { |e| e.to_s }
    end

    # transforms a path into a Maven group
    def path_to_group(path)
      splits = path_split(path)
      if splits[0] == "."
        return splits[1]
      else
        return "#{path_to_group(splits[0])}.#{splits[1]}"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tetra-0.43.0 lib/tetra/maven_kit_item.rb
tetra-0.42.0 lib/tetra/maven_kit_item.rb
tetra-0.41.0 lib/tetra/maven_kit_item.rb