ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Gainty" <mgai...@hotmail.com>
Subject Re: Filter on copy with directory contents
Date Thu, 21 Feb 2008 00:48:56 GMT

 <target name="run_java">
<java classname="input">
         <arg value="input.txt"/>
         <arg value="subst.sed"/>
         <arg value="output.txt"/>
         <classpath>
           <pathelement location="."/>
           <pathelement path="${java.class.path}"/>
         </classpath>
 </java>
</target>
Here is the source for input.javaimport java.lang.*;import java.io.*;public
class input{ public static void main(String args[]) {  BufferedWriter
writer=null;  try  {  String
replacement_strings[]={"<string>foo.jar</string>","<string>bar.jar</string>"
};        String input_file = null;        String subst_file=null;
String output_file=null;        try        {        input_file =
(args[0]!=null) ? args[0] : "input_file.txt";        subst_file =
(args[1]!=null) ? args[1] : "subst.sed";        output_file =
(args[2]!=null) ? args[2] : "output_file.txt";     }
catch(ArrayIndexOutOfBoundsException ioe)     {   System.out.println("USAGE
java input NameOfInputFile NameOfsubstFile NameOfOutputFile");
System.exit(0);    }  BufferedReader reader = new BufferedReader(new
FileReader(input_file));  BufferedReader sed_reader = new BufferedReader(new
FileReader(subst_file));     writer = new BufferedWriter(new
FileWriter(output_file));     for(int i=0; i<2; i++)     {   String buff   =
reader.readLine();   int last_char = buff.length();   String sed_buff =
sed_reader.readLine();   try   {    if(buff.length() == 0)    {
System.out.println("There is no data in the input file aborting");
System.exit(0);    }      }      catch(NullPointerException npe)      {
System.out.println("There is nothing in the input file aborting");
System.exit(0);      }   int place_holder = buff.indexOf("@REPLACEME@");
String before = new String(buff.getBytes(),0,place_holder);   int start =
place_holder;   int len = buff.length()-place_holder;   int offset =
last_char-(place_holder+new String("@REPLACEME@").length());   String after
= new String(buff.getBytes(),len,offset);   StringBuffer string_to_write=new
StringBuffer(before);   if(place_holder!= -1)   {
string_to_write.append(sed_buff);    string_to_write.append(after);      }
//write it out...      writer.write(new String(string_to_write),0,new
String(string_to_write).length());      writer.write("\n");  }
writer.close();     } //end try..     catch(java.io.IOException ioe)
{   System.out.println("IOException thrown message =
oe.getMessage());  }    }}----- Original Message -----
From: "Paul J. Lucas" <pauljlucas@mac.com>
To: "Martin Gainty" <mgainty@hotmail.com>
Sent: Wednesday, February 20, 2008 5:05 PM
Subject: Re: Filter on copy with directory contents


> 1. I was looking for an all-ant solution.  I know how to do it with
> other tools.
>
> 2. Your solution doesn't solve my problem.  As I originally stated, I
> want to replace @REPLACEME@ with the entire contents of a directory.
> There is exactly one @REPLACEME@ in the original file.  There are
> *not* @REPLACEME1@, @REPLACEME2@, etc.  How can I know how many files
> are in the directory in advance?  Your solution requires one
> @REPLACEMEn@ for each file.
>
> - Paul
>
>
> On Feb 20, 2008, at 1:55 PM, Martin Gainty wrote:
>
> > Paul-
> >
> > you can with sed
> >
> > input.txt contents:
> > @REPLACEME1@
> > @REPLACEME2@
> >
> > subst.sed contents:
> > s/@REPLACEME1@/foo.jar/g
> > s/@REPLACEME2@/bar.jar/g
> >
> > sed -f subst.sed input.txt > output.txt
> >
> > cat output.txt
> > foo.jar
> > bar.jar
> >
> > wrap it into an ant exec and you're all set.
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message