Sha256: 8a62ad2b42cc1e4dbb9bda60778cc743b7beb34d88b87fc3ffb0f10e639a6ebc

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

#--
#  __  __           _  __        _
# |  \/  |__ _ _ _ (_)/ _|___ __| |_
# | |\/| / _` | ' \| |  _/ -_|_-<  _|
# |_|  |_\__,_|_||_|_|_| \___/__/\__|
#
#++

require 'digest/md5'

module Reap

  # = Manifest
  #
  # Create a manifest file for the package. Presently it is a very simple
  # md5 + filename manifest. In the future this will be exanded to build
  # a varity of manifest formats.
  #
  # Task specific settings:
  #
  #    include       Files to include
  #    exclude       Files to exclude
  #

  class Manifest

    include TaskUtils

    MUST_EXCLUDE = [ 'InstalledFiles', '**/CVS/**/*', '**/*~' ] #, 'dist', 'pkg' ]

    attr_accessor :dir, :include, :exclude

    def initialize( man )
      @dir     = '.'
      @include = ['**/*']
      @exclude = []

      super

      @exclude |= MUST_EXCLUDE
    end

    # Generate manifest file.

    def generate #( type=nil )
      manifest_file = File.join( File.expand_path( @dir ), 'MANIFEST' )
      package_files = FileList.new

      package_files.include(*@include)
      package_files.exclude(*@exclude) #if @exclude and not @exclude.empty?
      File.open( manifest_file, 'w+') do |f|
        package_files.each do |pf|
          f << "#{salt(pf)} #{pf}\n" if File.file?(pf)
        end
      end
    end

    alias_method :call, :generate

  private

    def salt( file )
      Digest::MD5.new( File.read( file ) ).hexdigest
    end

  end

end #module Reap

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
reap-6.0.1 lib/reap/class/manifest.rb
reap-6.0.2 lib/reap/class/manifest.rb