From d99234485503d308bbb2304482eeb0b8d04b7bb0 Mon Sep 17 00:00:00 2001 From: Alex Blank Date: Tue, 4 Jan 2022 18:22:02 +0100 Subject: [PATCH] added scripts dir --- .scripts/git_auto_save.sh | 154 ++++++++++++++++++++++++++++++++++++ .scripts/server_connections | 4 + .scripts/update_clock.sh | 3 + .scripts/venv_activate | 6 ++ 4 files changed, 167 insertions(+) create mode 100644 .scripts/git_auto_save.sh create mode 100644 .scripts/server_connections create mode 100755 .scripts/update_clock.sh create mode 100644 .scripts/venv_activate diff --git a/.scripts/git_auto_save.sh b/.scripts/git_auto_save.sh new file mode 100644 index 0000000..4c64dcf --- /dev/null +++ b/.scripts/git_auto_save.sh @@ -0,0 +1,154 @@ +#!/bin/bash + +function is_git { + + # check if current folder is git repository + git_check_command=$(git -C $1 rev-parse > /dev/null 2>&1) + if [[ $? != 0 ]]; then + return 0 + fi + + return 1 +} + +function get_current_branch { + echo $(git branch | grep "*" | awk '{print $NF}') +} + +function get_auto_save_branches { + + auto_save_branches_raw=`git branch | grep "git_auto_save" | tail -1 | awk '{print $FN}'` + auto_save_branches=() + for i in "${$auto_save_branches_raw[@]}" + do + echo ${git_auto_save_branches_raw[i]} + #auto_save_branches+=${git_auto_save[i]} + done + + echo $auto_save_branches + +} + +function git_auto_save { + + if [[ $(is_git ".") -ne 0 ]]; then + echo "Current dir is not a git repository." + return 1 + fi + + current_branch_name=$(get_current_branch) + + timestamp=`date +%Y_%m_%d_%H_%M_%S` + new_branch_name="git_auto_save/$HOST/$timestamp" + + # check if there is unsaved work + changes=`git status --ignore-submodules=dirty | grep -E 'modified|deleted|new'` + if [[ ! $changes ]]; then + echo "No changes found." + return + fi + + # stash changes + echo "Stashing changes..." + git stash > /dev/null 2>&1 + + # create new branch + echo "Creating new branch $new_branch_name..." + git checkout -b $new_branch_name > /dev/null 2>&1 + git push origin $new_branch_name > /dev/null 2>&1 + + # apply stashed changes + echo "Applying stash to new branch..." + git stash apply > /dev/null 2>&1 + + # add changed files + echo "Adding new/changed files..." + git add -u > /dev/null 2>&1 + + # commit changes + echo "Commiting changes..." + git commit -m "git autosave from $timestamp" > /dev/null 2>&1 + + # push changes + echo "Pushing changes..." + git push --set-upstream origin $new_branch_name > /dev/null 2>&1 + + # move back to initial branch + echo "Moving back to previous branch..." + git checkout $current_branch_name > /dev/null 2>&1 + + echo "Done." +} + +function remove_auto_save { + + if [[ $(is_git ".") -ne 0 ]]; then + echo "Current dir is not a git repository." + return 1 + fi + + echo "Looking for auto-save branches..." + + if [[ $1 ]]; then + auto_save_branch=$1 + else + auto_save_branch=`git branch | grep "git_auto_save" | head -1 | awk '{print $FN}'` + fi + + + if [[ ! $auto_save_branch ]]; then + echo "No auto-save branch found." + return 1 + fi + + auto_save_branch=${auto_save_branch:2} + echo "Auto-save branch found: $auto_save_branch" + + current_branch=$(get_current_branch) + + # if on autosave branch, move to master + if [[ $current_branch == $auto_save_branch ]]; then + echo "Currently on autosave path, moving to Master" + git checkout master + fi + + # remove local branch + echo "Deleting local branch..." + git branch -d $auto_save_branch > /dev/null 2>&1 + + # remove remote branch + echo "Deleting remote branch..." + git push origin --delete $auto_save_branch > /dev/null 2>&1 + + return 0 + +} + +function remove_all_auto_saves { + + if [[ $(is_git ".") -ne 0 ]]; then + echo "Current dir is not a git repository." + return 1 + fi + + if [[ $1 != "y" ]]; then + echo "Please confirm with 'y'" + return + fi + + # remove all auto save branches + while [[ 1 ]]; do + if ! remove_auto_save; then + break + fi + echo "Auto-Save removed." + done + + echo "All auto-saves removed." + +} + +function load_last_auto_save { + auto_save_branches=$(get_auto_save_branches) + echo $auto_save_branches +} diff --git a/.scripts/server_connections b/.scripts/server_connections new file mode 100644 index 0000000..472e13c --- /dev/null +++ b/.scripts/server_connections @@ -0,0 +1,4 @@ +function connectToServer() { + ssh alex@65.21.140.171 +} + diff --git a/.scripts/update_clock.sh b/.scripts/update_clock.sh new file mode 100755 index 0000000..d5559d1 --- /dev/null +++ b/.scripts/update_clock.sh @@ -0,0 +1,3 @@ +function update_time { + timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)" +} diff --git a/.scripts/venv_activate b/.scripts/venv_activate new file mode 100644 index 0000000..c9afc05 --- /dev/null +++ b/.scripts/venv_activate @@ -0,0 +1,6 @@ +#!/bin/bash + +function activate() { + source ./venv/bin/activate +} +