Sha256: a0328b10abea480e4bff08a3b1fcb0db277ad52d10124996b95be05c8fd863a5

Contents?: true

Size: 1.08 KB

Versions: 18

Compression:

Stored size: 1.08 KB

Contents

require 'tmpdir'
require 'tempfile'

module PkgForge
  ##
  # Add dir methods to Forge
  class Forge
    Contract Or[String, Symbol] => String
    def dep(package)
      tmpdir(package.to_sym)
    end

    Contract None => String
    def releasedir
      tmpdir(:release)
    end

    Contract Symbol => String
    def tmpdir(id)
      @tmpdirs ||= {}
      @tmpdirs[id] ||= Dir.mktmpdir(id.to_s)
    end

    Contract Symbol => String
    def tmpfile(id)
      @tmpfiles ||= {}
      @tmpfiles[id] ||= Tempfile.create(id.to_s).path
    end
  end

  module DSL
    ##
    # Add dir methods to Forge DSL
    class Forge
      Contract Or[String, Symbol] => String
      def dep(dep_name)
        @forge.dep(dep_name)
      end
    end

    ##
    # Add dir methods to Build DSL
    class Build
      Contract None => String
      def releasedir
        @forge.tmpdir(:release)
      end

      Contract Or[String, Symbol] => String
      def dep(package)
        @forge.tmpdir(package.to_sym)
      end

      Contract Symbol => String
      def tmpdir(id)
        @forge.tmpdir(id)
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
pkgforge-0.13.0 lib/pkgforge/components/dirs.rb
pkgforge-0.12.5 lib/pkgforge/components/dirs.rb
pkgforge-0.12.4 lib/pkgforge/components/dirs.rb
pkgforge-0.12.3 lib/pkgforge/components/dirs.rb
pkgforge-0.12.1 lib/pkgforge/components/dirs.rb
pkgforge-0.12.0 lib/pkgforge/components/dirs.rb
pkgforge-0.11.0 lib/pkgforge/components/dirs.rb
pkgforge-0.10.0 lib/pkgforge/components/dirs.rb
pkgforge-0.9.3 lib/pkgforge/components/dirs.rb
pkgforge-0.9.2 lib/pkgforge/components/dirs.rb
pkgforge-0.9.1 lib/pkgforge/components/dirs.rb
pkgforge-0.9.0 lib/pkgforge/components/dirs.rb
pkgforge-0.8.4 lib/pkgforge/components/dirs.rb
pkgforge-0.8.3 lib/pkgforge/components/dirs.rb
pkgforge-0.8.1 lib/pkgforge/components/dirs.rb
pkgforge-0.8.0 lib/pkgforge/components/dirs.rb
pkgforge-0.6.10 lib/pkgforge/components/dirs.rb
pkgforge-0.6.9 lib/pkgforge/components/dirs.rb