2022-03-31 04:39:47 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
ROOT_DIR="$( cd "$( dirname $0 )/.." && pwd )"
|
2023-01-16 19:13:25 +00:00
|
|
|
NEOVIM_CONFIG_SOURCE_DIR="${ROOT_DIR}/nvim"
|
2022-03-31 04:39:47 +01:00
|
|
|
NEOVIM_CONFIG_DESTINATION_DIR="${XDG_CONFIG_HOME}/nvim"
|
2023-01-15 05:15:54 +00:00
|
|
|
VERSION="$( git describe --tags | tr -d '\n' )"
|
|
|
|
PROJECT_NAME="nvim.d"
|
|
|
|
CODEFLOW_GROUP="linux-home"
|
2022-03-31 04:39:47 +01:00
|
|
|
|
|
|
|
action="$1"
|
|
|
|
|
|
|
|
function backup {
|
|
|
|
if [ -d "${NEOVIM_CONFIG_DESTINATION_DIR}" ]; then
|
2022-05-18 05:33:02 +01:00
|
|
|
echo "[INFO] backing up existing config..."
|
2022-03-31 04:39:47 +01:00
|
|
|
timestamp=$( date +"%Y.%m.%dT%H.%M.%S" )
|
|
|
|
backup_dir="${ROOT_DIR}/backup"
|
|
|
|
mkdir -p ${backup_dir}
|
|
|
|
cd ${NEOVIM_CONFIG_DESTINATION_DIR}
|
|
|
|
tar czf "${backup_dir}/neovim-config-${timestamp}.tar.gz" .
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function clean {
|
|
|
|
rm -f ${NEOVIM_CONFIG_DESTINATION_DIR}/init.lua
|
|
|
|
find ${NEOVIM_CONFIG_DESTINATION_DIR} -maxdepth 1 -mindepth 1 -type d -not -iwholename "*/plugin" | xargs rm -rf
|
|
|
|
}
|
|
|
|
|
|
|
|
function update {
|
|
|
|
mkdir -p ${NEOVIM_CONFIG_DESTINATION_DIR}
|
|
|
|
|
|
|
|
# Syncing the neovim configuration files
|
2022-05-18 05:33:02 +01:00
|
|
|
echo "[INFO] Syncing ${NEOVIM_CONFIG_SOURCE_DIR} to ${NEOVIM_CONFIG_DESTINATION_DIR}..."
|
2022-03-31 04:39:47 +01:00
|
|
|
rsync -avh ${NEOVIM_CONFIG_SOURCE_DIR}/ ${NEOVIM_CONFIG_DESTINATION_DIR}
|
|
|
|
chmod a-rwx,u+rwx ${NEOVIM_CONFIG_DESTINATION_DIR}
|
|
|
|
|
2022-05-18 05:33:02 +01:00
|
|
|
# Ensuring the state directories are present
|
|
|
|
mkdir -p ${XDG_STATE_HOME}/nvim/{backup,swap,undo,view} ${XDG_STATE_HOME}/logs/nvim ${XDG_DATA_HOME}/nvim/spell
|
|
|
|
chmod 0700 ${XDG_STATE_HOME}/nvim/{backup,swap,undo,view} ${XDG_STATE_HOME}/logs/nvim ${XDG_DATA_HOME}/nvim/spell
|
2022-03-31 04:39:47 +01:00
|
|
|
}
|
|
|
|
|
2023-01-15 05:15:54 +00:00
|
|
|
function package {
|
|
|
|
cd "${ROOT_DIR}"
|
|
|
|
|
|
|
|
if ! [ -d "${ROOT_DIR}/build" ]; then
|
|
|
|
mkdir "${ROOT_DIR}/build"
|
|
|
|
fi
|
|
|
|
|
2023-01-16 19:13:25 +00:00
|
|
|
tar czv -f "${ROOT_DIR}/build/${PROJECT_NAME}-${VERSION}.tar.gz" $( basename "${NEOVIM_CONFIG_SOURCE_DIR}" )
|
2023-01-15 05:15:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function publish {
|
|
|
|
curl --request PUT \
|
|
|
|
--user ${CODEFLOW_USERNAME}:${CODEFLOW_TOKEN} \
|
|
|
|
--upload-file build/${PROJECT_NAME}-${VERSION}.tar.gz \
|
|
|
|
https://codeflow.dananglin.me.uk/api/packages/${CODEFLOW_GROUP}/generic/${PROJECT_NAME}/${VERSION}/${PROJECT_NAME}-${VERSION}.tar.gz
|
|
|
|
}
|
|
|
|
|
2022-03-31 04:39:47 +01:00
|
|
|
case ${action} in
|
|
|
|
backup)
|
|
|
|
backup
|
|
|
|
;;
|
|
|
|
clean)
|
|
|
|
clean
|
|
|
|
;;
|
|
|
|
update)
|
|
|
|
update
|
|
|
|
;;
|
2023-01-15 05:15:54 +00:00
|
|
|
package)
|
|
|
|
package
|
|
|
|
;;
|
|
|
|
publish)
|
|
|
|
publish
|
|
|
|
;;
|
2022-03-31 04:39:47 +01:00
|
|
|
*)
|
|
|
|
echo "ERROR: Unknown action ${action}"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|