package net.rim.ejde.ant;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Mkdir;
import org.apache.tools.ant.types.FileSet;
/**
* @author psuchomel
*/
public class FeatureUnpackTask extends Task {
private List<FileSet> fileset = new LinkedList<FileSet>();
/* packed feature jar files to be unpacked*/
public void addFileset(FileSet fs) {
fileset.add(fs);
}
private File destinationFolder;
/* top level folder, where are files unpacked, usually eclipse/features */
public void setTarget(File target){
this.destinationFolder = target;
}
public @Override void execute() throws BuildException {
for (FileSet fs : fileset) {
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
File basedir = ds.getBasedir();
for (String file : ds.getIncludedFiles()) {
String folderName = file.substring(0, file.lastIndexOf(".jar"));
Project p = getProject();
File targetFolder = new File(destinationFolder, folderName);
Mkdir mkdir = (Mkdir)p.createTask("mkdir");
mkdir.setDir(targetFolder);
mkdir.execute();
Expand unpack = (Expand)p.createTask("unzip");
unpack.setDest(targetFolder);
unpack.setSrc(new File(basedir, file));
unpack.execute();
}
}
}
}