From 997fcff814b920b5c5fa2982a6265a96e1d6ed8d Mon Sep 17 00:00:00 2001 From: Alex Karle Date: Sun, 8 Dec 2019 23:46:12 -0500 Subject: [PATCH] install: don't use custom dotfile manager I found that I was setting up my dotfiles on quite a few new accounts recently (mostly due to exploring different OSs). When I get a new machine / account, I want to be able to install the basics (and a few extras) without needing the dependency on my dotfile manager (or even git or bash). --- README.md | 3 +++ install.sh | 56 ++++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index fb1b9ce..443fa93 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,6 @@ I'm a big believer in the "do it yourself" style of dotfiles. Fork if you'd like, but don't blindly copy! These configs work for me, but [definitely aren't for everyone](./vc/README.md). + +This all said, [install.sh](./install.sh) is how I set up a new machine / +user account. diff --git a/install.sh b/install.sh index 07da2f7..1cfa28e 100755 --- a/install.sh +++ b/install.sh @@ -1,21 +1,45 @@ -#!/usr/bin/env bash -# simple install via dotfiler -# PREREQS: git +#!/bin/sh +# Minimal install (no prereqs, just the basics) +# Intended to be run on a new account, NOT for long term management +# However, should be safe to rerun to fix/tune-up an existing install -if ! [ -x "$(command -v git)" ]; then - echo "Error: git is not installed. Aborting..." >&2 - exit 1 -fi +DOTFILES="$( cd "$(dirname "$0")" ; pwd -P )" -mkdir -p $HOME/.config -mkdir -p $HOME/dev/proj +# ln with the right settings and a nicer message +try_ln() { + if [ -e "$2" ]; then + if [ -h "$2" ]; then + ln -sfT $1 $2 + echo "[Updated Link] $2" | sed "s#$HOME#~#" + else + echo "[Fail:Exists ] $2" | sed "s#$HOME#~#" + return + fi + else + # Use 'T' to prevent nesting if the dir already exists + ln -sT $1 $2 + echo "[New ] $2" | sed "s#$HOME#~#" + fi +} + +# Top level dirs +try_ln $DOTFILES/vim $HOME/.vim -echo "Installing dotfiler -> $HOME/dev/proj/dotfiler" -git clone https://github.com/akarle/dotfiler $HOME/dev/proj/dotfiler || exit 1 +# bin scripts +mkdir -p $HOME/bin +for f in $DOTFILES/bin/*; do + try_ln $f $HOME/bin/`basename $f` +done -echo "Using dotfiler to link bash (bare minimum)" -PATH=$HOME/dev/proj/dotfiler:$PATH -dotfiler.pl -d $HOME/dev/dotfiles -l bash tmux +# XDG_CONFIG_HOME dirs +mkdir -p $HOME/.config +for d in mutt offlineimap git nvim; do + try_ln $DOTFILES/$d $HOME/.config/$d +done -# dotfiler doesn't support .vim yet... -ln -s $HOME/dev/dotfiles/vim $HOME/.vim +# Traditional dotfiles +for d in bash tmux gdb X11; do + for f in $DOTFILES/$d/*; do + try_ln $f $HOME/.`basename $f` + done +done -- libgit2 0.28.4