Copia los archivos de la preservación de la estructura de directorios con rastrillo

StackOverflow https://stackoverflow.com//questions/12665008

  •  11-12-2019
  •  | 
  •  

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>
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top