Blob Blame History Raw
#!/bin/bash

# This script runs the eclipse can do the following:
#  - backup configuration files
#  - restore configuration files from backup loation
#  - run the eclipse reconciler
#  - delete the backup files.

# A list of the files of directory that are to be backed up
config_files=("artifacts.xml" "eclipse.ini" "p2" "configuration")

run_reconciler=/var/lib/rpm-state/eclipse/run-reconciler

# If the reconciler was run with the -clean options rerun the initializer.
if [[ "$@" == *-clean* ]]
then
    echo "Do not run the reconciler with -clean option use -vmargs -Dosgi.checkConfiguration=true instead"
    exit 0;
fi

if [ ! -e $run_reconciler ] && [[ "$@" != *-Dosgi.checkConfiguration=true* ]]
then
    echo "run-reconciler file not present. No need to run the reconciler"
    exit 0
fi

tmp_dir=$(mktemp -d)
echo "Tmpdir: $tmp_dir" 

if [ -e /usr/lib64/eclipse ]
then
    eclipse_dir=/usr/lib64/eclipse
else
    eclipse_dir=/usr/lib/eclipse
fi

echo "Removing run-reconciler file"
rm -f $run_reconciler

# if we are running the reconciler with -Dosgi.checkConfiguration=true
# probably doing an upgrade remove time stamp file(s).
if [[ "$@" == *-Dosgi.checkConfiguration=true* ]]
then
    find $eclipse_dir -name cache.timestamps -delete
    find $eclipse_dir -name .bundledata* -delete

fi

echo "backing up configuration files"
for file in ${config_files[@]}
do
    echo $file
    cp -rp $eclipse_dir/$file $tmp_dir/$file
done

echo "Running eclipse reconciler"
pushd $eclipse_dir
./eclipse --launcher.suppressErrors -nosplash -consolelog -application org.eclipse.equinox.p2.reconciler.application "$@"
r_exit_value=$?

# Check exit value
if [ ! $r_exit_value -eq 0 ]
then
    # Restore files
    echo "Reconciler failed. Restoring files"
    for file in ${config_files[@]}
    do
	echo $file
	cp --remove-destination -Trp $tmp_dir/$file $eclipse_dir/$file
    done
fi
popd

# delete the backup files
for file in  ${config_files[@]}
do
    rm -rf $tmp_dir/$file
done

exit $r_exit_value