#!/bin/bash
+ENVS="$HOME/envs"
+ANSIBLE="$ENVS/ansible/bin/ansible-playbook"
read -d '' HELP << EOF
dot - a (mostly) one script dotfiles manager
+1. Install this file on your path
+2. Clone your (or my) 'dotfiles' repository to ~/dotfiles
+3. Run 'dot help' to get started.
+
Copyright 2026 Edward Delaporte V
Licensed under AGPLv3 and later.
dot setup
- install the necessary tools to $HOME/envs/dot
+ install ansible CLI to $ANSIBLE
dot link FILE
updates ~/dot.HOSTNAME.yaml
to include a symlink from ~/dotfiles/files/FILE to ~/.FILE
+dot install SCRIPT
+ updates ~/dot.HOSTNAME.yaml
+ to run ~/dotfiles/SCRIPT.sh if it has not yet been run
+ creates ~/dot/SCRIPT.installed after SCRIPT has been run
+
dot check
check setup against ~/dot.HOSTNAME.yaml
fi
# set -v
-ENVS="$HOME/envs"
-ANSIBLE="$ENVS/ansible/bin/ansible-playbook"
-TASKFILE="$HOME/dot.$HOSTNAME.yaml"
+TASKFILE="$HOME/backup/dot.$HOSTNAME.yaml"
LINKFILES="$HOME/dotfiles/files"
INSTALLS="$HOME/dotfiles/install"
DOT="$HOME/dot"
path: $TASKFILE
EOF
+if [[ ! -f "$TASKFILE" ]]; then
+ echo "Creating empty $TASKFILE"
+ mkdir -p "$HOME/backup"
+ echo "$EMPTY_TASKFILE" >> $TASKFILE
+fi
if [ "$1" == "setup" ]; then
if [[ ! -f "$ANSIBLE" ]]; then
if [[ -f "$ANSIBLE" ]]; then
echo "[ ok ]: Ansible setup at $ANSIBLE"
fi
- if [[ ! -f "$TASKFILE" ]]; then
- echo "Creating $TASKFILE"
- echo "$EMPTY_TASKFILE" >> $TASKFILE
- fi
if [[ -f "$TASKFILE" ]]; then
echo "[ ok ]: dot config at $TASKFILE"
fi
if [ "$1" == "link" ]; then
if [ ! -n "$2" ]; then
- echo "May symlink:"
+ echo "Can symlink: (from $LINKFILES)"
cd $LINKFILES
ls -p | grep -v /
exit 1
if [ "$1" == "install" ]; then
if [ ! -n "$2" ]; then
- echo "Can install:"
+ echo "Can install: (.sh scripts in $INSTALLS)"
cd $INSTALLS
- ls -p | grep -v /
+ ls -p | grep -v / | grep .sh
exit 1
fi
if [[ ! -f "$INSTALLS/$2.sh" ]]; then