From: Ian Kelling Date: Mon, 23 May 2016 05:07:24 +0000 (-0700) Subject: user improvements, refactoring X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=commitdiff_plain;h=78d2e2f39980f5ee01b23d00c02c09ce4a709708 user improvements, refactoring --- diff --git a/conflink b/conflink index a4a32da..0170797 100755 --- a/conflink +++ b/conflink @@ -10,9 +10,21 @@ sysv() { } +# +if [[ -e /root/.unison && ! -L /root/.unison ]]; then + d=/q/p/c/machine_specific/$host/.unison + mkdir -p $d + mv -f /root/.unison/* $d +fi + + shopt -s nullglob shopt -s extglob +s lnf -T /q/p /p +s lnf -T /a/bin /b + + # if we make a link back to the root, traversing the subdirs stops. # This makes it so we can do subdir directories. Must call with absolute # paths. @@ -40,33 +52,46 @@ subdir-link-r() { } common-file-setup() { - if [[ -e $1/subdir_files ]]; then - subdir-link-r $1/subdir_files - fi - local x=( $1/!(subdir_files|filesystem) ) - (( ${#x[@]} >= 1 )) || return 0 - sysv lnf ${x[@]} ~ - # as of this writing, it doesn't exist in /a/c, but I've used it in the past. - if [[ -e $1/filesystem && $USER == ian ]]; then - sysv s cp -R $1/filesystem/* / - fi + for dir in "$@"; do + if [[ -e $dir/subdir_files ]]; then + subdir-link-r $dir/subdir_files + fi + local x=( $dir/!(subdir_files|filesystem) ) + (( ${#x[@]} >= 1 )) || return 0 + sysv lnf ${x[@]} ~ + # as of this writing, it doesn't exist in /a/c, but I've used it in the past. + if [[ -e $dir/filesystem && $USER == ian ]]; then + sysv s cp -R $dir/filesystem/* / + fi + done +} + +link-dirs() { + for dir in "$@"; do + common-file-setup $dir + common-file-setup $dir/machine_specific/$HOSTNAME + done } +all_dirs=({/a/c,/p/c}{,/machine_specific/$HOSTNAME}) +c_dirs=(/a/c{,/machine_specific/$HOSTNAME}) case $USER in ian) # p needs to go first so .ssh link is created, then config link inside it - for dir in {/a/c,/p/c}{,/machine_specific/$HOSTNAME}; do - common-file-setup $dir - done + common-file-setup $dir ${all_dirs[@]} sudo -u traci "$BASH_SOURCE" ;; traci) - for dir in /a/c{,/machine_specific/$HOSTNAME}; do - common-file-setup $dir - done + common-file-setup ${c_dirs[@]} + ;; + root) + if ! $ROOTCMD getent passwd ian; then + common-file-setup ${all_dirs[@]} + else + echo "$0: error: unexpected user"; exit 1 + fi ;; *) - echo "$0: error: run as ian or traci" - exit 1 + echo "$0: error: unexpected user"; exit 1 ;; esac