Sha256: 29fdab1aa0896163f1946cd8718e5a7cb7b4a70db50b42d7447747d9a46e7a90

Contents?: true

Size: 1.68 KB

Versions: 16

Compression:

Stored size: 1.68 KB

Contents

require 'autobuild/config'
require 'find'
require 'rake/tasklib'
require 'fileutils'

STAMPFILE = "autobuild-stamp"

module Autobuild
    def tree_timestamp(path, *exclude)
        # Exclude autobuild timestamps
	exclude.each { |rx| raise unless Regexp === rx }
        exclude << (/#{Regexp.quote(STAMPFILE)}$/)

        puts "getting tree timestamp for #{path}" if Autobuild.debug
        latest = Time.at(0)
        latest_file = ""

        Find.find(path) { |p|
            Find.prune if File.basename(p) =~ /^\./
            exclude.each { |pattern| 
                if p =~ pattern
                    puts "  excluding #{p}" if Autobuild.debug
                    Find.prune
                end
            }
            next if File.directory?(p)

            p_time = File.mtime(p)
            if latest < p_time
                latest = p_time
                latest_file = p
            end
        }

        puts "  newest file: #{latest_file} at #{latest}" if Autobuild.debug
        return latest
    end

    class SourceTreeTask < Rake::Task
        attr_accessor :exclude
	def initialize(*args, &block)
	    @exclude = []
	    super
	end
	    
        def timestamp
            tree_timestamp(name, %r#(?:^|/)(?:CVS|_darcs|\.svn)$#, *@exclude)
        end
    end
    def source_tree(path, &block)
        task = SourceTreeTask.define_task(path)
        block.call(task) unless !block
        task
    end
            
    def get_stamp(stampfile)
        return Time.at(0) if !File.exists?(stampfile)
        return File.mtime(stampfile)
    end

    def touch_stamp(stampfile)
        puts "Touching #{stampfile}" if Autobuild.debug
        FileUtils.touch(stampfile)
        sleep(1)
    end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
autobuild-1.2.15 lib/autobuild/timestamps.rb
autobuild-1.2.1 lib/autobuild/timestamps.rb
autobuild-1.2.12 lib/autobuild/timestamps.rb
autobuild-1.2.10 lib/autobuild/timestamps.rb
autobuild-1.2.11 lib/autobuild/timestamps.rb
autobuild-1.2.13 lib/autobuild/timestamps.rb
autobuild-1.2.14 lib/autobuild/timestamps.rb
autobuild-1.2.2 lib/autobuild/timestamps.rb
autobuild-1.2.3 lib/autobuild/timestamps.rb
autobuild-1.2.5 lib/autobuild/timestamps.rb
autobuild-1.2.6 lib/autobuild/timestamps.rb
autobuild-1.2.7 lib/autobuild/timestamps.rb
autobuild-1.2.4 lib/autobuild/timestamps.rb
autobuild-1.2.9 lib/autobuild/timestamps.rb
autobuild-1.2.8 lib/autobuild/timestamps.rb
autobuild-1.2 lib/autobuild/timestamps.rb