Copia los archivos de la preservación de la estructura de directorios con rastrillo
Pregunta
Mi objetivo es copiar una serie de archivos especificado por un patrón para el destino dir.Los archivos en el directorio de origen puede tener subdirectorios.
He intentado:
cp_r(Dir.glob('**/*.html'), @target_dir):
y
cp_r(FileList['**/*.html'], @target_dir):
pero ni el trabajo.
sólo funciona cuando hago algo como:
cp_r(Dir['.'], @target_dir):
Pero tengo que copiar sólo *.los archivos html no otra cosa.
Lo que necesito
cp --parents
Comando
Cualquier consejo, utilizando Ruby/el Rastrillo de los métodos?
ACTUALIZACIÓN Se ve como la cosa que es más fácil de hacer con Ant, no es posible con Ruby/el Rastrillo de la pila puede ser que tendría que buscar en otra cosa.No quiero escribir código personalizado para hacer que funcione en Ruby.Acabo de pensar acerca de Ruby/Rake como la solución más adecuada para eso.
ACTUALIZACIÓN 2 Esta es la forma en que yo lo hago con Ant
<target name="buildeweb" description="Builds web site" depends="clean">
<mkdir dir="${build.dir.web}" />
<copy todir="${build.dir.web}" verbose="true">
<fileset dir="${source.dir.web}">
<include name="**/*.html" />
<include name="**/*.htm" />
</fileset>
</copy>
<chmod perm="a+x">
<fileset dir="${build.dir.web}">
<include name="**/*.html" />
<include name="**/*.htm" />
</fileset>
</chmod>
</target>
Solución
Si desea rubí puro, puede hacer esto (con un poco de ayuda de FileUtils en la biblioteca estándar).
require 'fileutils'
Dir.glob('**/*.html').each do |file|
dir, filename = File.dirname(file), File.basename(file)
dest = File.join(@target_dir, dir)
FileUtils.mkdir_p(dest)
FileUtils.copy_file(file, File.join(dest,filename))
end
Otros consejos
Yo no he escuchado de cp --parents
, pero si hace lo que usted desea, entonces no hay vergüenza en el sólo uso de su Rakefile, como este:
system("cp --parents #{your} #{args}")
Esto podría ser útil:
# copy "files" to "dest" with any sub-folders after "src_root".
def copy_and_preserve files, dest, src_root
files.each {|f|
f.slice! src_root # the files without src_root dir
dest_dir = File.dirname(File.join(dest, f))
FileUtils.mkdir_p dest_dir # make dest dir
FileUtils.cp(File.join(src_root, f), dest_dir, {:verbose => true})
}
end