public
Description: A simple Java dependency injection framework for geeks who have to use Java and don't like XML
Homepage: http://www.subcryption.com
Clone URL: git://github.com/roddotnet/clearcut.git
clearcut / run.this
100755 154 lines (138 sloc) 4.205 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/sh
 
APP_NAME=clearcut
TEMPDIR=tmp
EXECPATH=bin
JARFILES=jar
JAVASRC=src
WEBINF=$EXECPATH/WEB-INF
WININF=$WEBINF
WEBAPP=$JAVASRC/main/webapp
WEBLIB=$WEBAPP/WEB-INF/lib
JUNIT=org.junit.runner.JUnitCore
TESTDIRS=
 
# Build, back up and test
   
FINDFILE=
if [ -x /bin/find ] ; then
FINDFILE=/bin/find
fi
if [ -x /usr/bin/find ] ; then
FINDFILE=/usr/bin/find
fi
if [ -x /usr/local/bin/find ] ; then
FINDFILE=/usr/local/bin/find
fi
SED=sed
if [ -x /bin/sed ] ; then
SED=/bin/sed
fi
if [ -x /usr/bin/sed ] ; then
SED=/usr/bin/sed
fi
    
# If M$ find, no dice
if [ "" == "$FINDFILE" ] ; then
echo "If on Windows, get Cygwin from www.cygwin.com"
  exit 1
fi
 
CLR=clear
SEP=":"
DIR="/"
ZIP=zip
  # uname fails in a DOS prompt
OPSYS=`uname | $SED s/CYGWIN.*/CYGWIN/`
if [ "$OPSYS" == "CYGWIN" ] ; then
  # Use Windows-DOS-style paths for some commands, and Unix for others
  WININF=`cygpath -d $WEBINF`
  CLR=cls
  SEP=";"
  DIR=\\
  ZIP=tar
fi
 
$CLR 2>/dev/null
                                           
mkdir $EXECPATH 2>/dev/null
cd $EXECPATH
$FINDFILE . -not -name '\.svn*' -exec rm -Rf {} \; 2>/dev/null
cd ..
            
JARS=`ls $JARFILES/*.jar`
JAVAPATH=$WEBINF
if [ "$OPSYS" == "CYGWIN" ] ; then
JAVAPATH=$WININF
fi
JAVAPATH=$JAVAPATH$DIR
JAVAPATH="$JAVAPATH"classes
JAVAROOT=$JAVAPATH
  # bin\WEB-INF\classes;jar\junit.jar;src\main\webapp\WEB-INF\lib\MSSQLJ~1.JAR...
for JAR in $JARS ; do
if [ "$OPSYS" == "CYGWIN" ] ; then
JAR=`cygpath -d $JAR`
  fi
JAVAPATH=$JAVAPATH$SEP$JAR
done;
JARS=`ls $WEBLIB/*.jar`
for JAR in $JARS ; do
if [ "$OPSYS" == "CYGWIN" ] ; then
JAR=`cygpath -d $JAR`
  fi
JAVAPATH=$JAVAPATH$SEP$JAR
done;
mkdir $WEBINF 2>/dev/null
mkdir $JAVAROOT 2>/dev/null
 
   # lib, xml, jsp...
cp -Rf $WEBAPP/* $EXECPATH/
   # Exclude Subversion paths which contain '.svn'
SRCFILES=`$FINDFILE $JAVASRC -not -name '*\.svn*' -type f -name '*.java'`
javac -d $JAVAROOT -classpath $JAVAPATH $SRCFILES
TESTDIRS=`$FINDFILE $WEBINF/classes -not -name '*\.svn*' -type f -name '*Test*.class'`
 
USRTMP=~/tmp/$APP_NAME
if [ "" != "$TESTDIRS" ] ; then
mkdir ~/tmp 2>/dev/null
  mkdir $USRTMP 2>/dev/null
  rm -Rf $USRTMP/* 2>/dev/null
  cp -Rf . $USRTMP
  if [ -d $USRTMP/log ] ; then
rm -Rf $USRTMP/log/* 2>/dev/null
  fi
# Remove Subversion folders in temp dir before making backup
  $FINDFILE $USRTMP -iname '.svn*' -exec rm -Rf {} \; 2>/dev/null
  rm ~/tmp/$APP_NAME.* 2>/dev/null
  cd $USRTMP
  if [ "$ZIP" == "tar" ] ; then
    $ZIP cvfz ~/tmp/$APP_NAME.tgz ./* &>/dev/null
  else
    $ZIP -r ~/tmp/$APP_NAME.zip ./* >/dev/null
  fi
cd $WEBINF/classes
  JARS=`ls ../../../$JARFILES/*.jar`
  JAVAPATH=.
  for JAR in $JARS ; do
if [ "$OPSYS" == "CYGWIN" ] ; then
JAR=`cygpath -d $JAR`
    fi
JAVAPATH=$JAVAPATH$SEP$JAR
  done;
  JARS=`ls ../../../$WEBLIB/*.jar`
  for JAR in $JARS ; do
if [ "$OPSYS" == "CYGWIN" ] ; then
JAR=`cygpath -d $JAR`
    fi
JAVAPATH=$JAVAPATH$SEP$JAR
  done;
  TESTDIRS=`$FINDFILE . -not -name '*\.svn*' -type f -name '*Test*.class'`
  for FILE in $TESTDIRS ; do # If you can't read this, you shouldn't be here
    FILE=`echo $FILE | $SED s/.class\$// | $SED s/\\\//\\./g | $SED s/\\\.\\\.//`
    java -classpath $JAVAPATH $JUNIT $FILE
  done;
  cd ../../..
fi
 
mkdir $TEMPDIR 2>/dev/null
rm -Rf $TEMPDIR/* 2>/dev/null
 
# Don't package Test classes in web application
for FILE in $TESTDIRS ; do
rm $WEBINF/classes/$FILE
done;
cp -Rf $EXECPATH/* $TEMPDIR/
$FINDFILE $TEMPDIR -iname '.svn*' -exec rm -Rf {} \; 2>/dev/null
 
cd $TEMPDIR
jar cf $APP_NAME-example.war *
cd ..
cp $TEMPDIR/$APP_NAME-example.war $EXECPATH
rm -Rf $TEMPDIR