/* ******************************************************************* * Copyright (c) 1999-2001 Xerox Corporation, * 2002 Palo Alto Research Center, Incorporated (PARC). * All rights reserved. * This program and the accompanying materials are made available * under the terms of the Eclipse Public License v 2.0 * which accompanies this distribution and is available at * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt * * Contributors: * Xerox/PARC initial implementation * ******************************************************************/ package org.aspectj.internal.tools.ant.taskdefs; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.Properties; import org.apache.tools.ant.taskdefs.Mkdir; @SuppressWarnings("deprecation") public class AJPush extends ConditionalTask { private File src; public void setSrc(String v) { src = project.resolveFile(v); } private String key; public void setKey(String v) { key = v; } File releaseDir = null; File downloadDir = null; boolean waiting = false; public void execute() throws org.apache.tools.ant.BuildException { //File releaseDir = src.getParentFile(); // todo: dependency on ant script variable name aj.release.dir releaseDir = project.resolveFile(project.getProperty("aj.release.dir")); // todo: dependency on ant script variable name download.dir downloadDir = project.resolveFile(project.getProperty("download.dir")); // For testing make sure these directories are made Mkdir mkdir = (Mkdir) project.createTask("mkdir"); mkdir.setDir(releaseDir); mkdir.execute(); mkdir = (Mkdir) project.createTask("mkdir"); mkdir.setDir(downloadDir); mkdir.execute(); log("Pushing from " + releaseDir + " to " + downloadDir); // add info to release.txt try { File releaseFile = new File(releaseDir, "release.txt"); File downloadFile = new File(downloadDir, "release.txt"); if (!releaseFile.canRead()) { releaseFile.createNewFile(); } addReleaseInfo(src, releaseFile); // copy to staging web server project.copyFile(src, new File(downloadDir, src.getName())); project.copyFile(releaseFile, downloadFile); } catch (IOException ioe) { ioe.printStackTrace(); } } void addReleaseInfo(File file, File propFile) throws IOException { Properties props = new Properties(); if (propFile.canRead()) { props.load(new FileInputStream(propFile)); } file.createNewFile(); // create new only if necessary long bytes = file.length(); DecimalFormat df = new DecimalFormat(); df.setGroupingSize(3); String bytesString = df.format(bytes); props.put("release." + key + ".size.bytes", bytesString); props.put("release." + key + ".date", project.getProperty("build.date")); props.put("release." + key + ".filename", file.getName()); props.put("release.date", project.getProperty("build.date")); props.put("release.version", project.getProperty("build.version.short")); props.put("release.versionName", project.getProperty("build.version.long")); String userName = System.getProperty("user.name"); if (userName != null) { props.put("release." + key + ".username", userName); } props.store(new FileOutputStream(propFile), null); } }