From 03064ce16a734a9605db0ddb53e5af0f5d4d3809 Mon Sep 17 00:00:00 2001
From: Pavel Kirilin <win10@list.ru>
Date: Fri, 31 Jul 2020 02:07:31 +0400
Subject: [PATCH] Added desktop patch applying logic.

Signed-off-by: Pavel Kirilin <win10@list.ru>
---
 update_desktop.sh | 67 +++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 65 insertions(+), 2 deletions(-)

diff --git a/update_desktop.sh b/update_desktop.sh
index bc57583..572d35e 100644
--- a/update_desktop.sh
+++ b/update_desktop.sh
@@ -1,5 +1,68 @@
 #!/bin/bash
 
+function local_update(){
+  rm -fv config.h && make && sudo make clean install
+}
+
+function full_update(){
+  apply_branch="apply-$(uuidgen)"
+  git checkout -b master
+  git checkout -b "$apply_branch"
+
+  for branch in $(git branch -a | grep -Ev 'master|remotes' | cut -c 3-);do
+    git merge "$branch"
+  done
+  
+  local_update
+  
+  git checkout master
+  git branch -D "$apply_branch"
+}
+
+function show_help(){
+  echo -e "Update your DWM based on your cureent config."
+  echo -e "Your local config can be found in {{dwm_dir}}\n"
+  echo "FLAGS:"
+  echo -e "\t-h, --help\tShow this message."
+  echo -e "\t-f, --full\tRun full update."
+  echo -e "\t-l, --local\tRun local update."
+}
+
+function main(){
+  local show_help=0
+  local full_update=0
+  local local_update=0
+
+  while [[ "$#" -gt 0 ]]; do
+      case $1 in
+          -f|--full) full_update=1 ;;
+          -h|--help) show_help=1 ;;
+          -l|--local) local_update=1 ;;
+          *) echo "Unknown parameter passed: $1"; exit 1 ;;
+      esac
+      shift
+  done
+
+  if [[ show_help -eq 1 ]];then
+    show_help
+    exit 0
+  fi
+
+  if [[ full_update -eq 1 ]];then
+    full_update
+    exit 0
+  fi
+
+  if [[ local_update -eq 1 ]];then
+    local_update
+    exit 0
+  fi
+
+  show_help
+  exit 0
+}
+
 pushd "{{dwm_dir}}"
-rm -fv config.h && make && sudo make clean install
-popd
+trap popd EXIT
+
+main "$@"
-- 
GitLab