On Fri, Dec 11, 2020, 21:34 Christopher Schultz < ch...@christopherschultz.net> wrote:
> Rainer, > > On 12/11/20 14:19, Rainer Jung wrote: > > Hi Chris, > > > > Am 11.12.2020 um 19:53 schrieb Christopher Schultz: > >> Rainer, > >> > >> On 12/11/20 06:19, Rainer Jung wrote: > >>> Am 11.12.2020 um 09:49 schrieb Martin Grigorov: > >>>> On Fri, Dec 11, 2020 at 10:41 AM Martin Grigorov < > mgrigo...@apache.org> > >>>> wrote: > >>>> > >>>>> Hi Rainer, > >>>>> > >>>>> On Fri, Dec 11, 2020 at 10:37 AM Rainer Jung < > rainer.j...@kippdata.de> > >>>>> wrote: > >>>>> > >>>>>> Am 11.12.2020 um 08:25 schrieb mgrigo...@apache.org: > >>>>>>> This is an automated email from the ASF dual-hosted git repository. > >>>>>>> > >>>>>>> mgrigorov pushed a commit to branch master > >>>>>>> in repository > >>>>>> https://gitbox.apache.org/repos/asf/tomcat-jakartaee-migration.git > >>>>>>> > >>>>>>> > >>>>>>> The following commit(s) were added to refs/heads/master by this > >>>>>>> push: > >>>>>>> new 000c876 Make migrate.sh usable from any directory > >>>>>>> 000c876 is described below > >>>>>>> > >>>>>>> commit 000c876ea3a1e700df2fffef70b29d9c3a9dfef2 > >>>>>>> Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> > >>>>>>> AuthorDate: Fri Dec 11 09:22:22 2020 +0200 > >>>>>>> > >>>>>>> Make migrate.sh usable from any directory > >>>>>>> > >>>>>>> Until now one has to `cd` to the bin/ folder to be able to > >>>>>>> execute > >>>>>> migrate.sh, otherwise lib/ folder won't be found > >>>>>>> --- > >>>>>>> src/main/scripts/migrate.sh | 4 +++- > >>>>>>> 1 file changed, 3 insertions(+), 1 deletion(-) > >>>>>>> > >>>>>>> diff --git a/src/main/scripts/migrate.sh > >>>>>>> b/src/main/scripts/migrate.sh > >>>>>>> index c2b941c..3d3f34c 100755 > >>>>>>> --- a/src/main/scripts/migrate.sh > >>>>>>> +++ b/src/main/scripts/migrate.sh > >>>>>>> @@ -1,4 +1,6 @@ > >>>>>>> #!/bin/sh > >>>>>>> > >>>>>>> +BIN_FOLDER=`dirname $PWD/$0` > >>>>>> > >>>>>> Does that work if $0 is an absolute path? > >>>>>> > >>>>> > >>>>> Yes, it does. I have tested it! > >>>>> BIN_FOLDER looks a bit strange: ///some/absolute/path/bin but it > works > >>>>> just fine on my Ubuntu. > >>>>> Does it work on Solaris ? :-) > >>>>> > >>>>> > >>>>>> > >>>>>> Maybe one could > >>>>>> > >>>>>> cd `dirname $0` > >>>>>> > >>>>> > >>>> Two issues with this: > >>>> > >>>> 1) the script usage is: ./bin/migrate.sh input.war output.war > >>>> if we "cd" into bin/ then input.war is not there anymore. Its path > >>>> should > >>>> be fixed to ../input.war somehow > >>>> > >>>> 2) it would be good to leave the user back to the original directory > >>>> after > >>>> executing the script but pushd/popd are not available for 'sh'. We > will > >>>> need to use Bash or another > >>> > >>> Solaris check: > >>> > >>> apache% cat test.sh > >>> #!/bin/sh > >>> > >>> echo `dirname $PWD/$0` > >>> > >>> apache% /home/jung/test.sh > >>> /home/jung//home/jung > >>> > >>> apache% ./test.sh > >>> /home/jung/. > >>> > >>> So the full path case does not work there. Switching to /bin/bash or > >>> /bin/ksh does not help. > >>> > >>> I agree with Mark concerning the TC scripts. > >>> > >>> Concerning your 2) above: a "cd" in the script does not change the > >>> working diretory of the calling shell. After the end of the script, > >>> the user is still in the same directory where he was before starting > it. > >>> > >>> 1) is a bit more tricky, because again one would have to handle the > >>> absolute and the relative case. > >>> > >>> What might help and should be compatible would be something like > >>> > >>> mydir="$PWD" > >>> cd `dirname "$0"` > >>> BIN_FOLDER="$PWD" > >>> cd "$mydir" > >> > >> I would avoid using "cd" in a script if at all possible. The migration > >> tool should be able to be run from anywhere with command-line > >> arguments to anything you need to call (e.g. java -cp). > > > > What risk do you see in the two "cd" uses? How is the ability to be > > called from anywhere reduced by teh above construct? It was actually > > introduced to myke it callable from anywhere. > > The whole script can be: > > BIN_FOLDER=$( dirname ${0} ) > java -cp "$BIN_FOLDER/../lib/*" org.apache.tomcat.jakartaee.MigrationCLI > "$@" > > The "cd" is not necessary at all and IMO is just more complicated. > > Note that the "-cp" won't work because the files must be separated by : > on *NIX. Unless I don't know how to build this in Maven (which is weird, > I have no mvnw command to run, so I did "mvn verify" which did build a > .jar file), there won't be any lib directory to include. > > Don't we really just want: > > BIN_FOLDER=$( dirname ${0} ) > java -jar "$BIN_FOLDER/target/jakartaee-migration-0.1.0.jar" \ > org.apache.tomcat.jakartaee.MigrationCLI "$@" > > ? > > Maybe I just don't understand what this script is intended to > accomplish. A shortcut for "java -jar [migration-tool]" or something else? > > Every Java-related shell script I ever write looks something like this: > > #/bin/sh > BIN_DIR=$( dirname ${0} ) > dirname just cuts the parent path segment. If there is no such then it returns '.' Play with it and see. CLASSPATH= > for jar in $BIN_DIR/lib/*.jar ; do > CLASSPATH="${CLASSPATH}:${jar}" > fi > > java -cp "$CLASSPATH" ${JAVA_OPTS} ${MAIN_CLASS} "$@" > > It always works from anywhere, and anything "$@" expands to is always > relative to the user's current working directory, exactly like they expect. > > If you need to know what BIN_DIR is inside the Java process, then: > > java -cp "$CLASSPATH" -Dbase.dir="${BIN_DIR}" ${JAVA_OPTS} \ > ${MAIN_CLASS} "$@" > > -chris > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > >