diff options
| author | 0scar <qgt268@alumni.ku.dk> | 2022-08-17 13:51:39 +0000 |
|---|---|---|
| committer | 0scar <qgt268@alumni.ku.dk> | 2022-08-17 13:51:39 +0000 |
| commit | fa30c58013689488b25f6918882ad63a93becaa9 (patch) | |
| tree | cf48dbe27068d30479daccb73d8ee056d69a7407 | |
| parent | 87b2a30232d0ac2c201910b6a5271a1db8fdf664 (diff) | |
Add script to easily merge local and repo files
| -rwxr-xr-x | merge_conf | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/merge_conf b/merge_conf new file mode 100755 index 0000000..9b87179 --- /dev/null +++ b/merge_conf @@ -0,0 +1,26 @@ +#!/usr/bin/env sh + +SUBMODULES=$(git submodule status | sed -E 's/ [a-z0-9]+ ([^ ]+) .*/\1/') +FILES=$(tree -aqifF --noreport --prune .local .config | sed -E '/\/$/d;s/\*$//') + +for submodule in ${SUBMODULES}; do + SS=$(printf '%s' "${submodule}" | sed 's/\//\\\//g;s/\./\\./g') + FILES=$(printf '%s' "${FILES}" | sed -E "/${SS}/d") +done + +function copy() { + local FILE="${1}" + echo -ne "missing $FILE\n" + read -p "copy to local config? [y/n]:" yn + case $yn in + [Yy]*) cp $f ~/$f;; + [Nn]*) return;; + esac +} + +for f in ${FILES}; do + [ -e "${HOME}/${f}" ] || copy $f + + diff -q "${HOME}/${f}" "${f}" >/dev/null + [ $? -ne 0 ] && vimdiff "${HOME}/${f}" "${f}" +done |
