aboutsummaryrefslogtreecommitdiffstats
path: root/build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java
diff options
context:
space:
mode:
Diffstat (limited to 'build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java')
-rw-r--r--build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java b/build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java
new file mode 100644
index 000000000..26ab7ce5f
--- /dev/null
+++ b/build/src/main/java./aspectj/internal/tools/ant/taskdefs/AJPush.java
@@ -0,0 +1,91 @@
+/* *******************************************************************
+ * 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 v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * 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;
+
+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);
+ }
+
+}