#!/bin/env bash if [ -n "$debug" ] ; then set -x fi BIN_DIR=$(dirname "$0") CORE_DIR=$(realpath "$BIN_DIR/..") GEN_BZ2=false GEN_MD5=false GEN_XZ=false OUT_DIR="${CORE_DIR?}" VERSION= usage() { cat < ] [--version=.tar.[bz2|xz] EOF } while [ "${1}" != "" ]; do parm=${1%%=*} arg=${1#*=} has_arg= if [ "${1}" != "${parm?}" ] ; then has_arg=1 else arg="" fi # echo "parm=!${parm}!" # echo "arg=!${arg}!" case "${parm}" in -2|--bz2) GEN_BZ2=true ;; -x|--xz) GEN_XZ=true ;; -5|--md5) GEN_MD5=true ;; -o|--output-dir) if [ -z "${has_arg}" ] ; then shift; arg="$1" fi if [ -z "${arg}" ] ; then echo "Missing argument for option $parm" 1>&2 exit -1 else OUT_DIR="$arg" fi ;; -v|--version) if [ -z "${has_arg}" ] ; then shift; arg="$1" fi if [ -z "${arg}" ] ; then echo "Missing argument for option $parm" 1>&2 exit -1 else VERSION="$arg" fi ;; -h|--help) usage exit 0 ;; -*) echo "Invalid option $1" 1>&2 exit -1 ;; *) if [ -z "${LABEL}" ] ; then LABEL="$parm" else echo "Too many arguments.. $@" 1>&2 exit -1 fi ;; esac shift done # we need a label if [ -z "${LABEL}" ] ; then echo "Missing argument. We need a git label as source" 1>&2 exit 1 fi # default to xz compression if ! ${GEN_BZ2?} && ! ${GEN_XZ?} ; then GEN_XZ=true fi # --version= is mandatory if [ -z "${VERSION}" ] ; then VERSION="${LABEL?}" fi base_name="libreoffice-${VERSION}" # --output-dir default to core-dir if [ -z "${OUT_DIR}" ] ; then OUT_DIR="$CORE_DIR?}" fi if [ ! -d "${CORE_DIR?}" ] ; then echo "Core repo directory $CORE_DIR does not exist or is not a directory" 1>&2 exit 1 fi if [ ! -d "${CORE_DIR?}/.git" ] ; then echo "Core repo $CORE_DIR is not a git repo" 1>&2 exit 1 fi if [ ! -d "${OUT_DIR?}" ] ; then echo "Output directory $OUT_DIR does not exist or is not a directory" 1>&2 exit 1 fi pushd "${CORE_DIR}" > /dev/null echo "archiving core..." git archive --format=tar -o "${OUT_DIR}/${base_name}.tar" ${LABEL?} concatenate_list= for module in dictionaries helpcontent2 translations ; do if [ ! -e ${module?}/.git ] ; then echo "Warning: module $module is not present" 1>&2 else echo "archiving ${module?}..." cd ${module?} git archive --format=tar --prefix="${module?}/" -o "${OUT_DIR}/${base_name}-${module?}.tar" ${LABEL?} cd .. fi done if ${GEN_BZ2?} ; then echo "bzip2 compression..." for i in ${OUT_DIR}/${base_name}*tar; do bzip2 -fkz "$i" done if ${GEN_MD5?} ; then echo "md5sum..." for i in ${OUT_DIR}/${base_name}*tar.bz2; do md5sum "$i" > "$i.md5" done fi fi if ${GEN_XZ?} ; then echo "xz compression..." for i in ${OUT_DIR}/${base_name}*tar; do xz -fz "$i" done if ${GEN_MD5?} ; then echo "md5sum..." for i in ${OUT_DIR}/${base_name}*tar.xz; do md5sum "$i" > "$i.md5" done fi else for i in ${OUT_DIR}/${base_name}*tar; do rm "$i" done fi echo "Done."