Come posso eco un nome di file per due volte con 'FileSet' e 'PathConvert'?

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

  •  23-10-2019
  •  | 
  •  

Domanda

ho questo semplice compito Ant che elenca tutti '.png' file in una cartella:

<target name="listimages">
    <!-- Assume files a A and B -->
    <fileset id="dist.contents" dir="${basedir}">
        <include name="**/*.png"/>
    </fileset>

    <pathconvert pathsep="${line.separator}"
                 property="prop.dist.contents" 
                 refid="dist.contents">
        <mapper type="flatten" />
        <map from="${basedir}" to=""/>
    </pathconvert>
    <echo>${prop.dist.contents}</echo>
</target>

Questo stampa

[echo] A.png
[echo] B.png

Ma, quello che voglio è per i nomi dei file di apparire due volte su ogni riga.

[echo] A.png,A.png
[echo] B.png,B.png

Come posso fare questo?

(Questa domanda è un follow-up a Come faccio a stampare un insieme di file in un file, un nome di file per riga? )

È stato utile?

Soluzione

Si potrebbe usare un regexp mapper (al posto del flatten) che implementa l'appiattimento e duplicazione. Questo è piuttosto semplicistico, ma potrebbe fare:

<mapper type="regexp" from=".*/(.*)" to="\1,\1" />

avrebbe bisogno di regolazione per il separatore di percorso locale.

meglio, però, utilizzare un chainedmapper al posto del appiattire:

<chainedmapper>
    <mapper type="flatten" />
    <mapper type="regexp" from="(.*)" to="\1,\1" />
</chainedmapper>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top