nvim.d/.helpers/config
Dan Anglin 360c7fdba1
ci: Dagger workflow to publish nvim.d to Code Flow
Add a new Dagger workflow to package and publish the neovim configuration
to a generic registry in Code Flow.
2023-01-15 05:15:54 +00:00

80 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$( cd "$( dirname $0 )/.." && pwd )"
NEOVIM_CONFIG_SOURCE_DIR="${ROOT_DIR}/neovim"
NEOVIM_CONFIG_DESTINATION_DIR="${XDG_CONFIG_HOME}/nvim"
VERSION="$( git describe --tags | tr -d '\n' )"
PROJECT_NAME="nvim.d"
CODEFLOW_GROUP="linux-home"
action="$1"
function backup {
if [ -d "${NEOVIM_CONFIG_DESTINATION_DIR}" ]; then
echo "[INFO] backing up existing config..."
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
echo "[INFO] Syncing ${NEOVIM_CONFIG_SOURCE_DIR} to ${NEOVIM_CONFIG_DESTINATION_DIR}..."
rsync -avh ${NEOVIM_CONFIG_SOURCE_DIR}/ ${NEOVIM_CONFIG_DESTINATION_DIR}
chmod a-rwx,u+rwx ${NEOVIM_CONFIG_DESTINATION_DIR}
# 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
}
function package {
cd "${ROOT_DIR}"
if ! [ -d "${ROOT_DIR}/build" ]; then
mkdir "${ROOT_DIR}/build"
fi
tar czv -f "${ROOT_DIR}/build/${PROJECT_NAME}-${VERSION}.tar.gz" neovim
}
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
}
case ${action} in
backup)
backup
;;
clean)
clean
;;
update)
update
;;
package)
package
;;
publish)
publish
;;
*)
echo "ERROR: Unknown action ${action}"
exit 1
;;
esac