def stamp(template_path, destination=nil, opt={})
      # Ignore destination if its a hash, its meant to be opt
      opt, destination = destination, nil if destination.is_a? Hash
      
      # Render and filter
      r = find_and_render template_path, opt
      r = filter_through r, opt[:filter]
      return r if destination.nil?

      # Place it in a file
      write_scratch_file(destination, r, opt[:absolute_destination]) do |path, scratch|
        updated = File.exists? path
        Embeds.copy_keeps(path, scratch)
        if files_are_same?(path, scratch) || (opt[:once] && updated)
          FileUtils.rm scratch
        else
          FileUtils.mv scratch, path
          STDOUT.write "#{updated ? :Updated : :Created} #{path.relative_to_project_root}\n".color(updated ? :white : :green) unless opt[:quiet]
        end
      end
      nil
    end
def stamp(template_path, destination=nil, opt={})
      # Ignore destination if its a hash, its meant to be opt
      opt, destination = destination, nil if destination.is_a? Hash
      
      # Render and filter
      r = find_and_render template_path, opt
      r = filter_through r, opt[:filter]
      return r if destination.nil?

      # Place it in a file
      write_scratch_file(destination, r, opt[:absolute_destination]) do |path, scratch|
        updated = File.exists? path
        Embeds.copy_keeps(path, scratch)
        if files_are_same?(path, scratch) || (opt[:once] && updated)
          FileUtils.rm scratch
        else
          FileUtils.mv scratch, path
          STDOUT.write "#{updated ? :Updated : :Created} #{path.relative_to_project_root}\n".color(updated ? :white : :green) unless opt[:quiet]
        end
      end
      nil
    end
Stamp a template into a file or return it as a string
 @param template_path [String] path to template file relative to {Config#template_path}
 @param destination [String] path to which the generated file should be written, relative to the {Config::ProjectConfig#project_path}
 @option opt [Boolean] :absolute_template_path (false) is the +template_path+ absolute?
 @option opt [Boolean] :absolute_destination (false) is the +destination+ absolute?
 @option opt [Boolean] :once (false) if +true+, the file will not be updated if it already exists
 @option opt [Binding] :binding (nil) an optional binding to use while evaluating the template
 @option opt [String, Array<String>] :filter (nil) name(s) of {Filters}
 @option opt [Boolean] :quiet (false) suppress writing to STDOUT?
 @return [nil or String] if +destination+ is not provided, the stamped template is returned as a string