summaryrefslogtreecommitdiff
path: root/merge_conf
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2022-08-17 13:51:39 +0000
committer0scar <qgt268@alumni.ku.dk>2022-08-17 13:51:39 +0000
commitfa30c58013689488b25f6918882ad63a93becaa9 (patch)
treecf48dbe27068d30479daccb73d8ee056d69a7407 /merge_conf
parent87b2a30232d0ac2c201910b6a5271a1db8fdf664 (diff)
Add script to easily merge local and repo files
Diffstat (limited to 'merge_conf')
-rwxr-xr-xmerge_conf26
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