freeipa/install/ui/util/prepare-dojo.sh
Petr Vobornik df95ba5983 WebUI build: use NodeJS instead of Rhino
Rhino is no longer mainstream, nor is Nashorn. In addition it is quite
slow (about 10x) in comparison to NodeJS. Over the years NodeJS became
common part of OSes, thus one of the original reasons why use Rhino
went away.

The change in 01-Make-dojo-builder-buildable-by-itself.patch fixes
an incorrect change of the patch (it was not processing input options
well).

Removing configRhino.js and adding configNode.js are prerequisites
for Dojo Builder. These files are copied from Dojo project. Without
them it doesn̈́'t run. In long run, it would be good to replace Dojo
builder with something else but that is outside of this commit/PR.

Last changes are preparation for update to latest stable version of
Dojo 1. The updated Dojo and Dojo builder are in subsequent commit.

Reviewed-By: Armando Neto <abiagion@redhat.com>
2018-07-12 15:38:01 +02:00

207 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
# Authors:
# Petr Vobornik <pvoborni@redhat.com>
#
# Copyright (C) 2012 Red Hat
# see file 'COPYING' for use and warranty information
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -o errexit
#
# This script prepares working enviroment to use dojo toolkit.
#
# It checkouts public git mirrors of dojo svns then applies custom patches and
# makes symbolic links from install/ui/js/dojo and install/ui/js/util
# freeipa/install/ui absolute path - to use when this script is not run from
# install/ui directory
usage() {
cat <<-__EOF__;
NAME
prepare-dojo.sh - prepare FreeIPA Web UI developmnent enviroment to work
with Dojo Library
SYNOPSIS
path/to/prepare-dojo.sh [--help] [--all] [other options]
DESCRIPTION
prepare-dojo.sh is a shell script which prepares FreeIPA Web UI enviroment
for creating custom Dojo/Dojo or Dojo/Util/Build builds.
OPTIONS
--help print the help message
--clone clone git repository
--checkout checkout git repository
--patches applies custom patches, must be used with --checkout
--links makes symbolic links from src directory to Dojo directory
--dojo work with Dojo
--util work with Util
--all Do --clone --checkout --patches --links --dojo --util
--branch <br> Specify a Dojo branch/tag/hash to checkout, default: 1.8.3
--dir <dir> Specify a clone dir, default: freeipa/../dojo/
__EOF__
}
if [ "$#" = "0" ] ; then
usage
exit 0
fi
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# relative path for target dir to checkout dojo
DOJO_DIR=$DIR/../../../../dojo
# working version of Dojo toolkit
BRANCH='1.13.0'
YES='YES'
args=`getopt -q -u -l help,checkout,clone,patches,links,dojo,util,all,branch:,dir: a $*`
if test $? != 0
then
usage
exit 1
fi
set -- $args
for i
do
case "$i" in
--help)
shift;
HELP=$YES
;;
--checkout)
shift;
CHECKOUT=$YES
;;
--clone)
shift;
CLONE=$YES
;;
--patches)
shift;
PATCHES=$YES
;;
--links)
shift;
LINKS=$YES
;;
--dojo)
shift;
DOJO=$YES
;;
--util)
shift;
UTIL=$YES
;;
--all | -a)
shift;
CHECKOUT=$YES
CLONE=$YES
PATCHES=$YES
LINKS=$YES
DOJO=$YES
UTIL=$YES
ALL=$YES
;;
--branch)
shift;
BRANCH=$1
shift;
;;
--dir)
shift;
DOJO_DIR=$1
shift;
;;
*)
;;
esac
done
if [[ $HELP = $YES ]] ; then
usage
exit 0
fi
if [ ! -d $DOJO_DIR ] ; then
mkdir $DOJO_DIR
fi
# clone dojo git repositories
pushd $DOJO_DIR
if [[ $DOJO = $YES ]] ; then
if [[ $CLONE = $YES ]] ; then
git clone https://github.com/dojo/dojo.git
fi
pushd dojo
if [[ $CHECKOUT = $YES ]] ; then
git clean -dfx
git checkout master
git fetch --tags
git fetch
git branch -D $BRANCH
git checkout $BRANCH
fi
popd
if [[ $LINKS = $YES ]] ; then
rm -f $DIR/../src/dojo
ln -s $DOJO_DIR/dojo $DIR/../src/dojo
fi
fi
if [[ $UTIL = $YES ]] ; then
if [[ $CLONE = $YES ]] ; then
git clone https://github.com/dojo/util.git
fi
pushd util
if [[ $CHECKOUT = $YES ]] ; then
git clean -dfx
git checkout master
git fetch --tags
git fetch
git branch -D $BRANCH
git checkout $BRANCH
fi
if [[ $PATCHES = $YES ]] ; then
# apply util custom patches
git am $DIR/build/patches/*.patch
fi
popd
if [[ $LINKS = $YES ]] ; then
rm -f $DIR/../src/build
ln -s $DOJO_DIR/util/build $DIR/../src/build
fi
fi
popd # $DOJO_DIR