#!/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 $(pwd)) 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`\)