#!/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 < ] [ --core-dir=.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 --prefix="${base_name?}" -o "${OUT_DIR}/${base_name}.tar" ${LABEL?} concatenate_list= for module in dictionaries helcontent2 translations ; do if [ ! -f ${module?}/.git ] ; then echo "Warning: module $module is not present" 1>&2 else echo "archiving ${module?}..." git archive --format=tar --prefix="${base_name?}/${module?}" -o "${OUT_DIR}/${base_name}-${module?}.tar" ${LABEL?} concatenate_list="${concatenate_list?} ${OUT_DIR}/${base_name}-${module?}.tar" fi done if [ -n "${concatenate_list?}" ] ; then tar --concatenate --file="${OUT_DIR}/${base_name}.tar" ${concatenate_list?} rm ${concatenate_list?} fi if ${GEN_BZ2?} ; then echo "bzip2 compression..." bzip2 -fkz "${OUT_DIR}/${base_name}.tar" if ${GEN_MD5?} ; then echo "md5sum..." md5sum "${OUT_DIR}/${base_name}.tar.bz2" > "${OUT_DIR}/${base_name}.tar.bz2.md5" fi fi if ${GEN_XZ?} ; then echo "xz compression..." xz -fz "${OUT_DIR}/${base_name}.tar" if ${GEN_MD5?} ; then echo "md5sum..." md5sum "${OUT_DIR}/${base_name}.tar.xz" > "${OUT_DIR}/${base_name}.tar.zx.md5" fi else rm "${OUT_DIR}/${base_name}.tar" fi echo "Done."