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