You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2007/01/06 19:26:28 UTC

svn commit: r493527 - /tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb

Author: hlship
Date: Sat Jan  6 10:26:28 2007
New Revision: 493527

URL: http://svn.apache.org/viewvc?view=rev&rev=493527
Log:
Fix new lines to be consistent (and work on OSX)

Modified:
    tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb

Modified: tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb?view=diff&rev=493527&r1=493526&r2=493527
==============================================================================
--- tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb (original)
+++ tapestry/tapestry5/tapestry-project/trunk/support/update-copyrights.rb Sat Jan  6 10:26:28 2007
@@ -1,297 +1,298 @@
-#!/usr/bin/ruby -w -d -v 
-
-# Executable Ruby script to walk one or more directories worth of 
-# source files and add or update the copyright comment block on each file.
-#
-# File types are identified by extension, different file types
-# vary in the format of the copyright comment block and its exact position.
-#
-# The template for each block will contain the string {YEAR}.  This is replaced
-# by the current year.  However, if a current comment block exists,
-# then the file is not touched (ASF rules is that the copyright year should
-# only be updated when an actual change occurs to the file).
-#
-# The {ORG} placeholder in the template is replaced with the organization,
-# which defaults to "The Apache Software Foundation", but can be overridden with the
-# -o command line argument.
-
-require 'find'
-
-# Directory containing this script, used to locate templates (which are stored
-# relative to the script itself.
-
-SCRIPT_DIR = File.split(__FILE__)[0]
-YEAR = Time.now.year.to_s
-
-$ORG = "The Apache Software Foundation"
-
-def read_template(file)
-  result = []
-  
-  File.open(SCRIPT_DIR + "/" + file) do |file|
-    file.each { |line| result << line }
-  end
-  
-  return result
-end
-
-# Writes out the content (array of strings) to the file.
-# Actually, writes to a temporary file, then deletes the original
-# file and renames the new file to it.
-
-def write_file(path, content)
-  puts "Writing #{path} ..."
-  
-  temp = path + "~"
-  
-  File.open(temp, "w") do |file|
-    content.each { |line| file << line }
-  end
-  
-  File.delete(path)
-  File.rename(temp, path)
-end
-
-# Scans the content (which should be the complete file)
-# for the copyright year.  Returns the year, which
-# may be as single year ("2004") or a sequence of
-# years ("2004, 2005, 2007"). Returns YEAR if
-# no copyright year was found in the content.
-
-def scan_for_year(content, comment_prefix)
-  
-  content.each do |line|
-    
-    if ! line.strip.empty? then
-      
-      return YEAR if line[0, comment_prefix.length] != comment_prefix 
-      
-      if line =~ /copyright ((\d+)(\s*,\s*\d+)*)/i
-        then
-        return $1
-      end
-      
-    end
-    
-  end
-  
-  # Degenerate case -- a file that contains just comments?  Shouldn't happen
-  # but just in case.
-  
-  return YEAR
-  
-end
-
-# Synthesizes a copyright comment block by locating the {YEAR} token
-# and substituting the year paremeter, and the {ORG} token with $ORG
-
-def synthesize_copyright(template, year)
-  template.collect { |line| line.sub(/\{YEAR\}/, year).sub(/\{ORG\}/, $ORG) }
-end
-
-class Filter
-
-  def initialize(comment, template_file)
-    @comment = comment
-    @template = read_template(template_file)
-  end
-
- def update(path)
-    
-    content = nil
-    dirty = false
-    
-    File.open(path) { |file|  content = file.readlines }
-    
-    year = scan_for_year(content, @comment)
-    
-    copyright_comment = synthesize_copyright(@template, year)
-    
-    0.upto(@template.length() - 1) do |line|
-      dirty ||= content[line] != copyright_comment[line]
-    end
-    
-    # TODO: What if the new comment is *shorter* than the old comment?
-    # Need to find and trim those line.
-    
-    return false if !dirty    
-    
-    # Strip out all leading blank lines and comments
-    
-    while ! content.empty?
-      line = content[0]
-      
-      if line.strip.empty? || line[0, @comment.length] == @comment
-        content.delete_at(0)
-      else
-        break
-      end
-    end
-    
-    # content[0] should now be the package statement (or, if in the default package,
-    # an import, class, interface, etc.
-    
-    content.insert(0, *copyright_comment)
-    
-    # Write the new content to the file
-    
-    write_file(path, content)
-    
-    return true
-  end
-end
-
-# Filter for Java files.  The copyright comment is placed
-# before the first statement or directive (typically, before the package
-# directive)
-
-class JavaFilter < Filter
-  
-  def initialize
-    super("//", "copyright-java.txt")
-  end
-  
-end
-
-class PropertiesFilter < Filter
-
-  def initialize
-    super("#", "copyright-properties.txt")
-  end
-end
-
-# Filter used for any XML file.  The copyright is placed after the <?xml ...?> line, and before
-# anything else.
-
-class XMLFilter
-  
-  def initialize
-    @template = read_template("copyright-xml.txt")
-  end
-  
-  # Returns true if the line looks like an XML "<!DOCTYPE ..",
-  # or element "<foo ..."  This will not match an XML comment
-  # or the "<?xml ..." declaration.
-  
-  def document_start?(line)
-    return line == nil || line.match(/^\s*<(!DOCTYPE|\w+)/) != nil
-  end
-  
-  def scan_for_year(content)
-    
-    content.each do |line|
-      if line =~ /Copyright ((\d+)(\s*,\s*\d+)*)/
-        return $1
-      elsif document_start?(line)
-        return YEAR
-      end
-    end
-    
-    return YEAR
-  end
-  
-  def update(path)
-    
-    content = nil
-    dirty = false
-    
-    File.open(path) { |file|  content = file.readlines }
-    
-    year = scan_for_year(content)
-    
-    copyright_comment = synthesize_copyright(@template, year)
-    
-    # Ignore the first line, it is expected to be the <?xml
-    # directive.
-    
-    0.upto(@template.length() - 1) do |line|
-      dirty ||= content[line + 1] != copyright_comment[line]
-    end
-    
-    # TODO: What if the new comment is *shorter* than the old comment?
-    # Need to find and trim those line.
-    
-    return false if !dirty    
-    
-    until document_start?(content[1])
-      content.delete_at(1)
-    end
-    
-    content.insert(1, *copyright_comment)
-    
-    write_file(path, content)
-    
-    return true
-  end
-end
-
-# Maps a particular file path pattern to a particular filter.  Tracks the files
-# that have matched the pattern.
-
-class FilterPattern
-  
-  def initialize(pattern, filter)
-    @pattern = pattern
-    @filter = filter    
-    @files = []
-  end
-  
-  def match?(path)
-    if path.match(@pattern) != nil
-      @files << path
-      return true      
-    end
-    
-    return false    
-  end
-  
-  def update
-    count = 0
-    @files.each do |file| 
-      count += 1 if @filter.update(file)
-    end
-    
-    return count
-  end
-end
-
-$filter_patterns = []
-
-def register_filter(pattern, filter)
-  $filter_patterns << FilterPattern.new(pattern, filter)
-end
-
-def match?(path)
-  $filter_patterns.each do |fp|
-    return true if fp.match?(path)    
-  end
-  
-  return false
-end
-
-
-register_filter(/\.(java|aj)$/, JavaFilter.new)
-register_filter(/(\/cli\.xconf|(\.(xml|xsl|jwc|application|library|page|script)))$/, XMLFilter.new)
-register_filter(/\.properties$/, PropertiesFilter.new)
-
-$matches = 0
-$update_count = 0
-
-if (ARGV[0] == "-o")
-  ARGV.shift  
-  $ORG = ARGV.shift
-  puts "Using organization '#$ORG'"
-end
-
-Find.find(*ARGV) do |f|
-  
-  if f =~ /(CVS|SVN|target)$/ 
-    Find.prune
-  else
-    $matches += 1 if match?(f)
-  end
-end
-
-$filter_patterns.each { |fp| $update_count += fp.update }
-
-puts "Updated #$update_count files (of #$matches files found)."
+#!/usr/bin/ruby -w -d -v
+
+# Executable Ruby script to walk one or more directories worth of
+# source files and add or update the copyright comment block on each file.
+#
+# File types are identified by extension, different file types
+# vary in the format of the copyright comment block and its exact position.
+#
+# The template for each block will contain the string {YEAR}.  This is replaced
+# by the current year.  However, if a current comment block exists,
+# then the file is not touched (ASF rules is that the copyright year should
+# only be updated when an actual change occurs to the file).
+#
+# The {ORG} placeholder in the template is replaced with the organization,
+# which defaults to "The Apache Software Foundation", but can be overridden with the
+# -o command line argument.
+
+require 'find'
+
+# Directory containing this script, used to locate templates (which are stored
+# relative to the script itself.
+
+SCRIPT_DIR = File.split(__FILE__)[0]
+YEAR = Time.now.year.to_s
+
+$ORG = "The Apache Software Foundation"
+
+def read_template(file)
+  result = []
+ 
+  File.open(SCRIPT_DIR + "/" + file) do |file|
+    file.each { |line| result << line }
+  end
+ 
+  return result
+end
+
+# Writes out the content (array of strings) to the file.
+# Actually, writes to a temporary file, then deletes the original
+# file and renames the new file to it.
+
+def write_file(path, content)
+  puts "Writing #{path} ..."
+ 
+  temp = path + "~"
+ 
+  File.open(temp, "w") do |file|
+    content.each { |line| file << line }
+  end
+ 
+  File.delete(path)
+  File.rename(temp, path)
+end
+
+# Scans the content (which should be the complete file)
+# for the copyright year.  Returns the year, which
+# may be as single year ("2004") or a sequence of
+# years ("2004, 2005, 2007"). Returns YEAR if
+# no copyright year was found in the content.
+
+def scan_for_year(content, comment_prefix)
+ 
+  content.each do |line|
+    
+    if ! line.strip.empty? then
+      
+      return YEAR if line[0, comment_prefix.length] != comment_prefix
+      
+      if line =~ /copyright ((\d+)(\s*,\s*\d+)*)/i
+        then
+        return $1
+      end
+      
+    end
+    
+  end
+ 
+  # Degenerate case -- a file that contains just comments?  Shouldn't happen
+  # but just in case.
+ 
+  return YEAR
+ 
+end
+
+# Synthesizes a copyright comment block by locating the {YEAR} token
+# and substituting the year paremeter, and the {ORG} token with $ORG
+
+def synthesize_copyright(template, year)
+  template.collect { |line| line.sub(/\{YEAR\}/, year).sub(/\{ORG\}/, $ORG) }
+end
+
+class Filter
+
+  def initialize(comment, template_file)
+    @comment = comment
+    @template = read_template(template_file)
+  end
+
+ def update(path)
+    
+    content = nil
+    dirty = false
+    
+    File.open(path) { |file|  content = file.readlines }
+    
+    year = scan_for_year(content, @comment)
+    
+    copyright_comment = synthesize_copyright(@template, year)
+    
+    0.upto(@template.length() - 1) do |line|
+      dirty ||= content[line] != copyright_comment[line]
+    end
+    
+    # TODO: What if the new comment is *shorter* than the old comment?
+    # Need to find and trim those line.
+    
+    return false if !dirty    
+    
+    # Strip out all leading blank lines and comments
+    
+    while ! content.empty?
+      line = content[0]
+      
+      if line.strip.empty? || line[0, @comment.length] == @comment
+        content.delete_at(0)
+      else
+        break
+      end
+    end
+    
+    # content[0] should now be the package statement (or, if in the default package,
+    # an import, class, interface, etc.
+    
+    content.insert(0, *copyright_comment)
+    
+    # Write the new content to the file
+    
+    write_file(path, content)
+    
+    return true
+  end
+end
+
+# Filter for Java files.  The copyright comment is placed
+# before the first statement or directive (typically, before the package
+# directive)
+
+class JavaFilter < Filter
+ 
+  def initialize
+    super("//", "copyright-java.txt")
+  end
+ 
+end
+
+class PropertiesFilter < Filter
+
+  def initialize
+    super("#", "copyright-properties.txt")
+  end
+end
+
+# Filter used for any XML file.  The copyright is placed after the <?xml ...?> line, and before
+# anything else.
+
+class XMLFilter
+ 
+  def initialize
+    @template = read_template("copyright-xml.txt")
+  end
+ 
+  # Returns true if the line looks like an XML "<!DOCTYPE ..",
+  # or element "<foo ..."  This will not match an XML comment
+  # or the "<?xml ..." declaration.
+ 
+  def document_start?(line)
+    return line == nil || line.match(/^\s*<(!DOCTYPE|\w+)/) != nil
+  end
+ 
+  def scan_for_year(content)
+    
+    content.each do |line|
+      if line =~ /Copyright ((\d+)(\s*,\s*\d+)*)/
+        return $1
+      elsif document_start?(line)
+        return YEAR
+      end
+    end
+    
+    return YEAR
+  end
+ 
+  def update(path)
+    
+    content = nil
+    dirty = false
+    
+    File.open(path) { |file|  content = file.readlines }
+    
+    year = scan_for_year(content)
+    
+    copyright_comment = synthesize_copyright(@template, year)
+    
+    # Ignore the first line, it is expected to be the <?xml
+    # directive.
+    
+    0.upto(@template.length() - 1) do |line|
+      dirty ||= content[line + 1] != copyright_comment[line]
+    end
+    
+    # TODO: What if the new comment is *shorter* than the old comment?
+    # Need to find and trim those line.
+    
+    return false if !dirty    
+    
+    until document_start?(content[1])
+      content.delete_at(1)
+    end
+    
+    content.insert(1, *copyright_comment)
+    
+    write_file(path, content)
+    
+    return true
+  end
+end
+
+# Maps a particular file path pattern to a particular filter.  Tracks the files
+# that have matched the pattern.
+
+class FilterPattern
+ 
+  def initialize(pattern, filter)
+    @pattern = pattern
+    @filter = filter    
+    @files = []
+  end
+ 
+  def match?(path)
+    if path.match(@pattern) != nil
+      @files << path
+      return true      
+    end
+    
+    return false    
+  end
+ 
+  def update
+    count = 0
+    @files.each do |file|
+      count += 1 if @filter.update(file)
+    end
+    
+    return count
+  end
+end
+
+$filter_patterns = []
+
+def register_filter(pattern, filter)
+  $filter_patterns << FilterPattern.new(pattern, filter)
+end
+
+def match?(path)
+  $filter_patterns.each do |fp|
+    return true if fp.match?(path)    
+  end
+ 
+  return false
+end
+
+
+register_filter(/\.(java|aj)$/, JavaFilter.new)
+register_filter(/(\/cli\.xconf|(\.(xml|xsl|jwc|application|library|page|script)))$/, XMLFilter.new)
+register_filter(/\.properties$/, PropertiesFilter.new)
+
+$matches = 0
+$update_count = 0
+
+if (ARGV[0] == "-o")
+  ARGV.shift  
+  $ORG = ARGV.shift
+  puts "Using organization '#$ORG'"
+end
+
+Find.find(*ARGV) do |f|
+ 
+  if f =~ /(CVS|SVN|target)$/
+    Find.prune
+  else
+    $matches += 1 if match?(f)
+  end
+end
+
+$filter_patterns.each { |fp| $update_count += fp.update }
+
+puts "Updated #$update_count files (of #$matches files found)."
+