#!/usr/bin/env bash # extract current branch name BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) # get name of the most top folder of current directory, used for the # output filename ARCHIVE_NAME=$(basename "$(git rev-parse --show-toplevel)") if [[ $BRANCH = tags* ]]; then BRANCH=$(git describe) echo Building for tag "\"$BRANCH\"" FILENAME=$ARCHIVE_NAME.$BRANCH.zip else echo Building archive on branch "\"$BRANCH\"" # get a version string, so archives will not be overwritten when creating # many of them VERSION=$(git describe --always --long) # if not on master append branch name into the filename if [ "$BRANCH" = "$(git_extra_default_branch)" ]; then FILENAME=$ARCHIVE_NAME.$VERSION.zip else FILENAME=$ARCHIVE_NAME.$VERSION.$BRANCH.zip fi fi # rename invalid chars for the file path FILENAME=${FILENAME//\//-} FILENAME=${FILENAME//\\/-} # combine path and filename OUTPUT=$PWD/$FILENAME # building archive git archive --format zip --output "$OUTPUT" "$BRANCH" # also display size of the resulting file echo Saved to \""$FILENAME"\" \("$(du -h "$OUTPUT" | cut -f1)"\)