From 63f4fb48885fdbccd9baa9650aa2675427c68dd9 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 7 Jul 2008 11:25:59 +0000 Subject: [PATCH] Improve packaging git-svn-id: https://svn.argeo.org/slc/trunk@1379 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- org.argeo.slc.agent/src/assembly/base.xml | 29 +++++----- org.argeo.slc.agent/src/base/bin/slc | 6 ++- .../java/org/argeo/slc/ant/AntConstants.java | 3 ++ .../org/argeo/slc/ant/AntSlcApplication.java | 3 +- .../main/java/org/argeo/slc/cli/SlcMain.java | 53 +++++++++++++++---- 5 files changed, 67 insertions(+), 27 deletions(-) mode change 100644 => 100755 org.argeo.slc.agent/src/base/bin/slc diff --git a/org.argeo.slc.agent/src/assembly/base.xml b/org.argeo.slc.agent/src/assembly/base.xml index 6513362fc..aef97a5cd 100644 --- a/org.argeo.slc.agent/src/assembly/base.xml +++ b/org.argeo.slc.agent/src/assembly/base.xml @@ -1,15 +1,16 @@ - - base - false - - tar.gz - - - - src/base - - - + + base + false + + tar.gz + + + + src/base + + 0755 + + \ No newline at end of file diff --git a/org.argeo.slc.agent/src/base/bin/slc b/org.argeo.slc.agent/src/base/bin/slc old mode 100644 new mode 100755 index fd1fd4f7a..ca8ef49d9 --- a/org.argeo.slc.agent/src/base/bin/slc +++ b/org.argeo.slc.agent/src/base/bin/slc @@ -25,9 +25,11 @@ fi echo ARGEO_SLC_HOME=$ARGEO_SLC_HOME -for i in "$ARGEO_SLC_HOME/lib/*.jar +for i in "${ARGEO_SLC_HOME}"/lib/*.jar do CLASSPATH="$CLASSPATH:$i" done -java -cp $CLASSPATH org.argeo.slc.cli.SlcMain $1 $2 $3 $4 $5 $6 $7 $8 $9 +#echo CLASSPATH=$CLASSPATH + +java -cp $CLASSPATH org.argeo.slc.cli.SlcMain "$@" diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntConstants.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntConstants.java index 1e6cf142e..f89742d61 100644 --- a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntConstants.java +++ b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntConstants.java @@ -38,6 +38,9 @@ public interface AntConstants { /** Name of the Spring bean used by default */ public final static String DEFAULT_TEST_RUN_PROPERTY = "slc.defaultTestRun"; + /** Property for the runtime to use. */ + public final static String RUNTIME_PROPERTY = "slc.runtime"; + // LOG4J public final static String MDC_ANT_PROJECT = "slc.ant.project"; diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntSlcApplication.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntSlcApplication.java index 525c276af..51ff337e4 100644 --- a/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntSlcApplication.java +++ b/org.argeo.slc.agent/src/main/java/org/argeo/slc/ant/AntSlcApplication.java @@ -173,7 +173,8 @@ public class AntSlcApplication { String runtimeStr = slcExecution.getAttributes().get( AntConstants.EXECATTR_RUNTIME); if (runtimeStr == null) - runtimeStr = "default"; + runtimeStr = System.getProperty(AntConstants.RUNTIME_PROPERTY, + "default"); ResourceLoader rl = new DefaultResourceLoader(getClass() .getClassLoader()); diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/SlcMain.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/SlcMain.java index 10636f3d4..0267715c8 100644 --- a/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/SlcMain.java +++ b/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/SlcMain.java @@ -1,5 +1,8 @@ package org.argeo.slc.cli; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; import java.util.Properties; import org.apache.commons.cli.CommandLine; @@ -10,8 +13,10 @@ import org.apache.commons.cli.Option; import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.slc.ant.AntConstants; import org.argeo.slc.core.SlcException; import org.argeo.slc.logging.Log4jUtils; @@ -25,7 +30,7 @@ public class SlcMain { private final static String BOOTSTRAP_LOG4J_CONFIG = "org/argeo/slc/cli/bootstrapLog4j.properties"; private final static Option modeOpt = OptionBuilder.withLongOpt("mode") - .withArgName("mode").hasArg().isRequired().withDescription( + .withArgName("mode").hasArg().withDescription( "SLC execution mode, one of: " + listModeValues()).create( 'm'); @@ -34,6 +39,11 @@ public class SlcMain { .withValueSeparator(',').withDescription( "use value for given property").create('p'); + private final static Option propertiesOpt = OptionBuilder.withLongOpt( + "properties").withArgName("properties file").hasArgs() + .withValueSeparator(',').withDescription( + "load properties from file (-p has priority)").create('P'); + private final static Option scriptOpt = OptionBuilder.withLongOpt("script") .withArgName("script").hasArg().withDescription( "SLC script to execute").create('s'); @@ -57,6 +67,7 @@ public class SlcMain { options.addOption(scriptOpt); options.addOption(targetsOpt); options.addOption(propertyOpt); + options.addOption(propertiesOpt); options.addOption(runtimeOpt); } @@ -74,10 +85,15 @@ public class SlcMain { // Mode String modeStr = cl.getOptionValue(modeOpt.getOpt()); - try { - mode = Mode.valueOf(modeStr); - } catch (IllegalArgumentException e) { - throw new SlcException("Unrecognized mode '" + modeStr + "'", e); + if (modeStr == null) { + mode = Mode.single; + } else { + try { + mode = Mode.valueOf(modeStr); + } catch (IllegalArgumentException e) { + throw new SlcException("Unrecognized mode '" + modeStr + + "'", e); + } } // Script @@ -94,6 +110,12 @@ public class SlcMain { } // Properties + if (cl.hasOption(propertiesOpt.getOpt())) { + for (String propertyFile : cl.getOptionValues(propertiesOpt + .getOpt())) { + loadPropertyFile(properties, propertyFile); + } + } if (cl.hasOption(propertyOpt.getOpt())) { for (String property : cl.getOptionValues(propertyOpt.getOpt())) { addProperty(properties, property); @@ -103,10 +125,7 @@ public class SlcMain { // Runtime if (cl.hasOption(runtimeOpt.getOpt())) { runtimeStr = cl.getOptionValue(runtimeOpt.getOpt()); - } else { - runtimeStr = "default"; } - } catch (ParseException e) { System.err.println("Problem with command line arguments. " + e.getMessage()); @@ -124,7 +143,8 @@ public class SlcMain { initLogging(properties); if (log.isDebugEnabled()) { log.debug("Mode: " + mode); - log.debug("Runtime: " + runtimeStr); + if (runtimeStr != null) + log.debug("Runtime: " + runtimeStr); log.debug("User properties: " + properties); if (script != null) log.debug("Script: " + script); @@ -154,7 +174,7 @@ public class SlcMain { return str.substring(0, str.length() - 2); } - private static void addProperty(Properties properties, String property) { + protected static void addProperty(Properties properties, String property) { int eqIndex = property.indexOf('='); if (eqIndex == 0) throw new SlcException("Badly formatted property " + property); @@ -167,7 +187,20 @@ public class SlcMain { } else { properties.setProperty(property, "true"); } + } + protected static void loadPropertyFile(Properties properties, + String propertyFile) { + FileInputStream in = null; + try { + in = new FileInputStream(propertyFile); + properties.load(in); + } catch (Exception e) { + throw new SlcException("Could not load proeprty file " + + propertyFile); + } finally { + IOUtils.closeQuietly(in); + } } private static void initLogging(Properties userProperties) { -- 2.39.2