You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.3 KiB
113 lines
3.3 KiB
#!/usr/bin/env bash
|
|
|
|
if ! docker info > /dev/null 2>&1; then
|
|
echo "This script uses docker, and it isn't running - please start docker and try again!"
|
|
exit 1
|
|
fi
|
|
|
|
############################################################
|
|
# Help #
|
|
############################################################
|
|
Help()
|
|
{
|
|
# Display Help
|
|
echo "Bootstraps a docker image for contributing changes to doom-nvim"
|
|
echo
|
|
echo "Syntax: ./start_docker.sh [-b <branch_name>]"
|
|
echo "options:"
|
|
echo "-b Create a new branch for the contribution"
|
|
echo "-h Shows this help menu"
|
|
echo
|
|
}
|
|
|
|
# Get directory of script
|
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
|
|
# Default options
|
|
BRANCH_NAME=doom-nvim-contrib # Branch to checkout / create
|
|
|
|
while getopts "b:h" option; do
|
|
case $option in
|
|
b) # set branch name
|
|
BRANCH_NAME=$OPTARG
|
|
echo "Setting branchname to $OPTARG"
|
|
;;
|
|
h) # display Help
|
|
Help
|
|
exit;;
|
|
*)
|
|
Help
|
|
exit;;
|
|
esac
|
|
done
|
|
|
|
cd "$SCRIPT_DIR" || exit
|
|
|
|
# Create the worktree if it doesn't already exist
|
|
if [[ ! -d "$SCRIPT_DIR"/doom-nvim-contrib ]]; then
|
|
echo "0. Creating new git worktree of doom-nvim at $SCRIPT_DIR/doom-nvim-contrib"
|
|
if git show-ref --quiet refs/heads/"$BRANCH_NAME"; then
|
|
git worktree add ./doom-nvim-contrib "$BRANCH_NAME"
|
|
else
|
|
git worktree add ./doom-nvim-contrib origin/develop -b "$BRANCH_NAME"
|
|
fi
|
|
fi
|
|
|
|
# CD into worktree
|
|
cd ./doom-nvim-contrib || exit
|
|
|
|
echo "1. Setting up branch"
|
|
# If branch exists just check it out
|
|
if git show-ref --quiet refs/heads/"$BRANCH_NAME"; then
|
|
if [[ ! $( git rev-parse --abbrev-ref HEAD ) == "$BRANCH_NAME" ]]; then
|
|
echo " - Checking out branch $BRANCH_NAME..."
|
|
git checkout "$BRANCH_NAME"
|
|
fi
|
|
else
|
|
# Pull latest version of develop
|
|
echo " - Creating new branch off develop..."
|
|
git checkout -b "$BRANCH_NAME" develop
|
|
git fetch --quiet
|
|
# If changes between local and origin, get latest changes
|
|
if [[ ! $( git rev-list develop...origin/develop --count ) -eq 0 ]]; then
|
|
echo " - WARN: There are upstream changes to develop branch. Please pull latest changes"
|
|
read -p " Do you want to continue creating $BRANCH_NAME? (y/n) " -n 1 -r
|
|
fi
|
|
# Create new branch for feature and check it out
|
|
echo " - Creating new branch $BRANCH_NAME..."
|
|
git checkout -b "$BRANCH_NAME"
|
|
fi
|
|
|
|
cd .. || exit
|
|
echo " - Success! Checked out $BRANCH_NAME branch at:"
|
|
echo " $SCRIPT_DIR/doom-nvim-contrib"
|
|
echo ""
|
|
|
|
echo "2. Setting up docker environment"
|
|
# Ensure docker image exists
|
|
if [[ ! "$(docker images -q doom-nvim-contrib)" ]]; then
|
|
echo " - Docker image does not exist. Building docker image..."
|
|
docker build -t doom-nvim-contrib .
|
|
fi
|
|
|
|
if [ "$(docker ps -aq -f status=exited -f name=doom-nvim-contrib-container)" ]; then
|
|
echo " - Cleaning up old container..."
|
|
# cleanup
|
|
docker rm doom-nvim-contrib-container >> /dev/null
|
|
fi
|
|
|
|
# Create docker container if haven't already
|
|
echo " - Success! Running docker container doom-nvim-contrib-container..."
|
|
echo ""
|
|
docker run \
|
|
-it \
|
|
-e UID="1000" \
|
|
-e GID="1000" \
|
|
-v "$SCRIPT_DIR"/doom-nvim-contrib:/home/doom/.config/nvim \
|
|
-v "$SCRIPT_DIR"/local-share-nvim:/home/doom/.local/share/nvim \
|
|
-v "$SCRIPT_DIR"/workspace:/home/doom/workspace \
|
|
--name doom-nvim-contrib-container \
|
|
--user doom \
|
|
doom-nvim-contrib
|
|
|
|
|
|
|