Sha256: fc4ff362f1526e56d981207c4045a2f668e47685da2af9f8036af2b548ef2077

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

module Pione
  module Model
    # PackageExpr is an expression of PIONE package.
    class PackageExpr < Element
      attr_reader :name

      # Create a package with name.
      #
      # @param name [String]
      #   package name
      def initialize(name)
        @name = name
        super()
      end

      # @api private
      def textize
        "package-expr(\"%s\")" % [@name]
      end

      # Return a rule path.
      #
      # @param other [RuleExpr]
      #   rule expression
      # @return [String]
      #   rule path string
      def +(other)
        raise ArgumentError.new(other) unless other.kind_of?(RuleExpr)
        "#{@name}:#{other.name}"
      end
    end

    class PackageExprSequence < Sequence
      set_pione_model_type TypePackageExpr
      set_element_class PackageExpr
    end

    TypePackageExpr.instance_eval do
      define_pione_method("bin", [], TypeString) do |vtable, rec|
        base = Location[vtable.get(Variable.new("__BASE__")).value]
        bin = base + "package" + rec.elements.first.name + "bin"
        working_directory = Location[vtable.get(Variable.new("__WORKING_DIRECTORY__")).first.value]
        bin.entries.each do |entry|
          path = working_directory + "bin" + entry.basename
          unless path.exist?
            entry.copy(working_directory + "bin" + entry.basename)
          end
        end
        PioneString.new((working_directory + "bin").path).to_seq
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/model/package-expr.rb
pione-0.2.1 lib/pione/model/package-expr.rb
pione-0.2.0 lib/pione/model/package-expr.rb