polx        2005/01/23 16:34:06

  Modified:    jelly/src/java/org/apache/commons/jelly Jelly.java
               jelly/src/java/org/apache/commons/jelly/util
                        CommandLineParser.java
               jelly/xdocs changes.xml
               jelly    maven.xml
  Log:
  Adding jelly -h and -v. (help and current-version).
  paul
  
  Revision  Changes    Path
  1.35      +29 -1     
jakarta-commons/jelly/src/java/org/apache/commons/jelly/Jelly.java
  
  Index: Jelly.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/src/java/org/apache/commons/jelly/Jelly.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- Jelly.java        9 Sep 2004 15:10:03 -0000       1.34
  +++ Jelly.java        24 Jan 2005 00:34:06 -0000      1.35
  @@ -101,6 +101,34 @@
               }
           }
       }
  +    
  +    
  +    public static String getJellyVersion() {
  +        return readBuildTimestampResource("jelly-version.txt");
  +    }
  +    
  +    public static String getJellyBuildDate() {
  +        return readBuildTimestampResource("jelly-build-date.txt");
  +    }
  +    
  +    private static String readBuildTimestampResource(String name) {
  +        java.io.Reader in = null;
  +        try {
  +            java.io.StringWriter w = new java.io.StringWriter();
  +            in = new 
java.io.InputStreamReader(Jelly.class.getResourceAsStream(name),"utf-8");
  +            int r;
  +            while ( (r=in.read()) >= 0 ) {
  +                w.write((char) r);
  +            }
  +            return w.toString();
  +        } catch(Exception ex) {
  +            ex.printStackTrace();
  +            try { in.close(); } catch(Exception e) {}
  +            throw new IllegalStateException("Resource \"" + name + "\" not 
found.");
  +        }
  +    }
  +    
  +    
   
       /**
        * Compiles the script
  
  
  
  1.10      +50 -13    
jakarta-commons/jelly/src/java/org/apache/commons/jelly/util/CommandLineParser.java
  
  Index: CommandLineParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/src/java/org/apache/commons/jelly/util/CommandLineParser.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CommandLineParser.java    10 Jan 2005 05:35:17 -0000      1.9
  +++ CommandLineParser.java    24 Jan 2005 00:34:06 -0000      1.10
  @@ -19,7 +19,9 @@
   import java.io.File;
   import java.io.FileWriter;
   import java.net.URL;
  +import java.util.Arrays;
   import java.util.ArrayList;
  +import java.util.List;
   import java.util.Properties;
   
   import org.apache.commons.cli.CommandLine;
  @@ -27,6 +29,7 @@
   import org.apache.commons.cli.Options;
   import org.apache.commons.cli.ParseException;
   import org.apache.commons.cli.Parser;
  +import org.apache.commons.cli.HelpFormatter;
   import org.apache.commons.jelly.Jelly;
   import org.apache.commons.jelly.JellyContext;
   import org.apache.commons.jelly.JellyException;
  @@ -46,6 +49,8 @@
   public class CommandLineParser {
   
       protected static CommandLineParser _instance = new CommandLineParser();
  +    
  +    private Options cmdLineOptions = null;
   
       public static CommandLineParser getInstance() {
           return _instance;
  @@ -66,6 +71,19 @@
           } catch (ParseException e) {
               throw new JellyException(e);
           }
  +        
  +        // check for -h or -v
  +        if (cmdLine.hasOption("h")) {
  +            new HelpFormatter().printHelp("jelly [scriptFile] [-script 
scriptFile] [-o outputFile] [-Dsysprop=syspropval] [-awt]",
  +                cmdLineOptions);
  +            System.exit(1);
  +        }
  +        if (cmdLine.hasOption("v")) {
  +            System.err.println("Jelly " + Jelly.getJellyVersion());
  +            System.err.println(" compiled: " + Jelly.getJellyBuildDate());
  +            System.err.println("");
  +            System.exit(1);
  +        }
   
           // get the -script option. If there isn't one then use args[0]
           String scriptFile = null;
  @@ -74,6 +92,9 @@
           } else {
               scriptFile = args[0];
           }
  +        
  +        // check the -awt option.
  +        boolean runInSwingThread = cmdLine.hasOption("awt") || 
cmdLine.hasOption("swing");
   
           //
           // Use classloader to find file
  @@ -93,13 +114,22 @@
               Jelly jelly = new Jelly();
               jelly.setScript(scriptFile);
   
  -            Script script = jelly.compileScript();
  +            final Script script = jelly.compileScript();
   
               // add the system properties and the command line arguments
  -            JellyContext context = jelly.getJellyContext();
  +            final JellyContext context = jelly.getJellyContext();
               context.setVariable("args", args);
               context.setVariable("commandLine", cmdLine);
  -            script.run(context, output);
  +            if (runInSwingThread) {
  +                javax.swing.SwingUtilities.invokeAndWait(new Runnable() { 
public void run() {
  +                    try {
  +                        script.run(context, output);
  +                    } catch (Exception ex) {
  +                        ex.printStackTrace();
  +                    }
  +            } } ); } else {
  +                script.run(context, output);
  +            }
   
               // now lets wait for all threads to close
               Runtime.getRuntime().addShutdownHook(new Thread() {
  @@ -126,10 +156,17 @@
        */
       public CommandLine parseCommandLineOptions(String[] args) throws 
ParseException {
           // create the expected options
  -        Options cmdLineOptions = new Options();
  +        cmdLineOptions = new Options();
           cmdLineOptions.addOption("o", true, "Output file");
           cmdLineOptions.addOption("script", true, "Jelly script to run");
  -
  +        cmdLineOptions.addOption("h","help", false, "Give this help 
message");
  +        cmdLineOptions.addOption("v","version", false, "prints Jelly's 
version and exits");
  +        cmdLineOptions.addOption("script", true, "Jelly script to run");
  +        cmdLineOptions.addOption("awt", false, "Wether to run in the AWT 
thread.");
  +        cmdLineOptions.addOption("swing", false, "Synonym of \"-awt\".");
  +        List builtinOptionNames = Arrays.asList(new String[]{
  +            "-o","-script","-h","--help","-v","--version","-awt","-swing"});
  +        
           // -D options will be added to the system properties
           Properties sysProps = System.getProperties();
   
  @@ -144,18 +181,18 @@
               // -D args will not be copied into the filteredArgList.
               if (arg.startsWith("-D") && (arg.length() > 2)) {
                   arg = arg.substring(2);
  -                             int ePos = arg.indexOf("=");
  -                             if(ePos==-1 || ePos==0 || ePos==arg.length()-1)
  -                                     System.err.println("Invalid system 
property: \"" + arg + "\".");
  -                             sysProps.setProperty(arg.substring(0,ePos), 
arg.substring(ePos+1));
  +                int ePos = arg.indexOf("=");
  +                if(ePos==-1 || ePos==0 || ePos==arg.length()-1)
  +                    System.err.println("Invalid system property: \"" + arg + 
"\".");
  +                sysProps.setProperty(arg.substring(0,ePos), 
arg.substring(ePos+1));
               } else {
                   // add this to the filtered list of arguments
                   filteredArgList.add(arg);
   
                   // add additional "-?" options to the options object. if 
this is not done
  -                // the only options allowed would be "-o" and "-script".
  +                // the only options allowed would be the builtin-ones.
                   if (arg.startsWith("-") && arg.length() > 1) {
  -                    if (!(arg.equals("-o") && arg.equals("-script"))) {
  +                    if (!(builtinOptionNames.contains(arg))) {
                           cmdLineOptions.addOption(arg.substring(1, 
arg.length()), true, "dynamic option");
                       }
                   }
  @@ -167,7 +204,7 @@
           filteredArgList.toArray(filterArgs);
   
           // parse the command line
  -        Parser parser = new GnuParser();
  +        Parser parser = new org.apache.commons.cli.GnuParser();
           return parser.parse(cmdLineOptions, filterArgs);
       }
   
  
  
  
  1.24      +4 -0      jakarta-commons/jelly/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/xdocs/changes.xml,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- changes.xml       22 Nov 2004 03:05:07 -0000      1.23
  +++ changes.xml       24 Jan 2005 00:34:06 -0000      1.24
  @@ -24,6 +24,10 @@
       <author email="[EMAIL PROTECTED]">dIon Gillard</author>
     </properties>
     <body>
  +    <release version="1.0-RC2" date="in CVS">
  +      <action dev="polx" type="fix" issue="JELLY-85">Removed instance-based 
ThreadLocal substituting a JellyContext-based tag-caching.</action>
  +      <action dev="polx" type="add" issue="JELLY-145">jelly -h or --help 
responds a help and jelly -v or --version responds the version.</action>
  +      </release>
       <release version="1.0-RC1" date="2004-11-22">
         <action dev="dion" type="fix" issue="JELLY-148" due-to="Hans 
Gilde">Huge memory leak resulting from the use of ThreadLocal.</action>
         <action dev="dion" type="fix" issue="JELLY-138">Character data is 
flushed by XMLOuput while XML data isn't.</action>
  
  
  
  1.92      +25 -4     jakarta-commons/jelly/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/jelly/maven.xml,v
  retrieving revision 1.91
  retrieving revision 1.92
  diff -u -r1.91 -r1.92
  --- maven.xml 19 Jan 2005 10:08:45 -0000      1.91
  +++ maven.xml 24 Jan 2005 00:34:06 -0000      1.92
  @@ -43,10 +43,19 @@
         </copy>
       </util:available>
     </postGoal>
  -  <!-- ================================================================== -->
  +    <!-- ================================================================== 
-->
     <!-- END: C O M M O N S - B U I L D                                     -->
     <!-- ================================================================== -->
   
  +  <!-- build the timestamp after compiling -->
  +  <postGoal name="java:compile">
  +    <echo 
file="${maven.build.dest}/org/apache/commons/jelly/jelly-version.txt"
  +      >${pom.currentVersion}</echo>
  +    <tstamp><format property="now" pattern="yyyy-MM-dd kk:mm:ss 
zzz"/></tstamp>
  +    <echo 
file="${maven.build.dest}/org/apache/commons/jelly/jelly-build-date.txt"
  +      >${now}</echo>
  +    </postGoal>
  +  
     <!-- create the lib and bin directories in the binary distro -->
     <preGoal name="dist:build">
       <echo>About to create lib and bin directories in 
${maven.dist.assembly.dir}</echo>
  @@ -383,6 +392,7 @@
         <property name="doBuildAll" value="false"/>
         <property name="fatJarPath" value="${maven.build.dir}/fatjelly.jar"/>
         <property name="classpathFile" 
value="${maven.build.dir}/classpath-with-deps.txt"/>
  +      <property name="mergedDepsFile" 
value="${maven.build.dir}/mergedDeps.xml"/>
           
         <!-- if we need to build, we need to build first jelly -->
         <j:if test="${doBuildAll}"><attainGoal 
name="jar:install-snapshot"/></j:if>
  @@ -417,9 +427,9 @@
           
         <j:forEach var="reactorProject" items="${reactorProjects}">
           <j:forEach var="dep" items="${reactorProject.dependencies}">
  -                                     <j:if test="${dep.artifactId eq 
'commons-jelly'}">${dep.setVersion("SNAPSHOT")}</j:if>
  -                                     ${deps.add(dep)}
  -                             </j:forEach>
  +          <j:if test="${dep.artifactId eq 
'commons-jelly'}">${dep.setVersion("SNAPSHOT")}</j:if>
  +          ${deps.add(dep)}
  +        </j:forEach>
         </j:forEach>
         <j:forEach var="tl" items="${jellyTaglibNames}">
           <j:new var="tlD" className="org.apache.maven.project.Dependency"/>
  @@ -455,6 +465,17 @@
               <echo>Adding jar 
${maven.repo.local}/${dep.groupId}/${dep.type}s/${dep.artifact}.</echo>
             </j:forEach>
           </jar>
  +      </j:if>
  +      
  +    <j:if test="${!empty(mergedDepsFile)}">
  +      <j:file prettyPrint="true" name="${mergedDepsFile}">
  +        <dependencyList project="commons-jelly"
  +              withAddOns="${tagLibs}">
  +          <j:forEach var="dep" items="${deps}">
  +            <dependency groupId="${dep.groupId}" 
artifactId="${dep.artifactId}" version="${dep.version}"/>
  +            </j:forEach>
  +          </dependencyList>
  +        </j:file>
         </j:if>
               
       </goal>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to