# TomEE Release Tools

This repo contains tools that help reduce the manual work associated with doing releases.

## Building

First, build the dependent components that do not yet have a release:

----
svn co https://svn.apache.org/repos/asf/creadur/tentacles/trunk tentacles
cd tentacles
mvn clean install -DskipTests -DfailIfNoTests=false
----

Then build this repo:

----
mvn clean install
----

## Running

Once compiled, the executable can be ran as follows:

----
$ ./target/release
Commands: 
                       
   dist                
   help                
   release-notes       

$ ./target/release dist
Missing sub-command
Usage: dist [subcommand] [options]

Sub commands: 
                       
   add-key             
   dev-to-release      
   list-releases       
   maven-to-dev        
   remove-release      

$ ./target/release dist list-releases
KEYS
tomee-1.7.5/
tomee-7.0.9/
tomee-7.1.4/
tomee-8.0.6/
tomee-8.0.7/
tomee-9.0.0-M7/
----

## Help text

Many of the commands have detailed man-page-style help text which can be obtained by the `help` command.  For example to get help on `release dist maven-to-dev`, run:

----
./target/release help dist maven-to-dev
----

In man-page style it will pipe to `less` and can be scrolled up and down.  The following is an example of what the man-page style looks like.

----
NAME
       maven-to-dev

SYNOPSIS
       dist maven-to-dev [options] String

DESCRIPTION
       Download  binaries  from  a  maven  repo  and  commit them to
       dist.apache.org dev

       The org/apache/tomee/apache-tomee and
       org/apache/tomee/tomee-project sections of the maven
       repository  will be scanned for the version specified and all
       zip and tar.gz  files  will  be  downloaded  along  with  any
       associated asc and sha1 files.  After download the sha1 files
       of each binary will be checked to ensure a complete download.
       The  sha256  and sha512 file for each binary will be computed
       and written to disk.

       If  the  --dry-run  flag  is  not enabled, the resulting zip,
       tar.gz, asc, sha256 and sha512 files will be  uploaded  to  a
       directory  in  dist.apache.org dev or the specified svn repo.

       When ready, the dist.apache.org dev directory can be moved to
       dist.apache.org release via the dist dev-to-release
       command.

OPTIONS
       --dry-run
              Download  the  files  to local disk, but do not commit
              them to svn

       --maven-repo=<URI>
              The  root  path of a Nexus staging repository or Maven
              Central
       
              default: https://repo1.maven.org/maven2/

       --svn-repo=<URI>
              The  svn  directory for tomee where a subdirectory can
              be created and binaries uploaded
       
              default: https://dist.apache.org/repos/dist/dev/tomee/

       --tmp=<File>
              The  directory  under  which  files can be temporarily
              downloaded
       
              default: /tmp/
----
