X-Git-Url: https://us-delaporte.pagekite.me/gitweb/dotfiles.git/blobdiff_plain/1674c31a23d3aaa4c37ccde88a5cf16483369dfc..caf0c1c18df5f550af1ae649be1d564799c39587:/bin/dot diff --git a/bin/dot b/bin/dot index c3e4a6a..a08b732 100755 --- a/bin/dot +++ b/bin/dot @@ -1,17 +1,28 @@ #!/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 @@ -24,12 +35,10 @@ if [ ! -n "$1" ] || [ "$1" == "help" ]; then 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" +DOT="$HOME/.dot" read -d '' EMPTY_TASKFILE << EOF --- @@ -44,6 +53,11 @@ read -d '' EMPTY_TASKFILE << EOF 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 @@ -55,10 +69,6 @@ if [ "$1" == "setup" ]; 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 @@ -81,7 +91,7 @@ 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 @@ -96,6 +106,20 @@ read -d '' LINK_THIS_FILE << EOF state: "link" EOF +if [[ "$2" == *"."* ]];then + # File already contains a dot +read -d '' LINK_THIS_FILE << EOF + + - name: symlink $2 + ansible.builtin.file: + src: "$LINKFILES/$2" + dest: "$HOME/$2" + state: "link" +EOF + + +fi + echo " $LINK_THIS_FILE" >> $TASKFILE echo "$2 added to symlinks in $TASKFILE" echo "Run 'dot apply' to create all configured symlinks" @@ -112,9 +136,9 @@ fi 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