Mon objectif est de copier un ensemble de fichiers spécifié par un modèle vers le dir cible. Les fichiers dans le répertoire source peuvent avoir des sous-diendants.
J'ai essayé: p> et p> Ça ne fonctionne que lorsque je fais quelque chose comme: p> mais j'ai besoin de copier uniquement des fichiers * .html non rien d'autre. P> J'ai besoin de ce que p> est p> tout conseil à l'aide de méthodes Ruby / Rake existantes? P> Mise à jour On dirait que la chose qui est plus facile à voir avec la fourmi, n'est pas possible avec Ruby / Rake Stack - Peut-être que je devrais regarder dans quelque chose d'autre. Je ne veux pas écrire le code personnalisé pour le faire fonctionner dans Ruby. Je pensais juste à Ruby / Rake en tant que solution appropriée pour cela. P> Mise à jour 2 strong> Voici comment je le fais avec Ant P> <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>
3 Réponses :
Je n'ai pas entendu parler de CP --Parents CODE>, mais si cela fait ce que vous voulez, il n'y a pas de honte à l'utiliser à partir de votre makefile, comme ceci:
system("cp --parents #{your} #{args}")
Salut @david, merci de conseils. Je n'en ai pas entendu parler avant hier aussi :-) Je voudrais une solution plus propre qui n'a pas besoin d'appeler des commandes système, mais travaillez dans Pure Ruby, je pensais que cela pouvait être résolu dans Ruby - sinon je peux écrire Bash script à la place.
Si vous voulez de PURE RUBY, vous pouvez le faire (avec un peu d'aide de FileTutils dans la bibliothèque standard).
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
Salut @mark, je veux une solution de rubise pure, oui. Mais j'aimerais une approche déclarative plus propre. Je pensais qu'une telle automatisation est possible avec une pile Ruby / Rake sans écrire du code personnalisé. Je voudrais quelque chose de plus déclaratif comme: cp_r (
Cela pourrait être utile:
Vous pouvez tout copier, puis supprimer ceux qui ne sont pas .html. Ce serait plus facile, car vous n'avez pas besoin de violer des chemins.
@ D11WTQ, ce n'est pas une bonne solution car dans ce cas, vous devez faire deux choses supplémentaires: copiez des fichiers inutiles, puis supprimez des fichiers inutiles.