aboutsummaryrefslogtreecommitdiff
path: root/ARCHIVED/library/stow
diff options
context:
space:
mode:
Diffstat (limited to 'ARCHIVED/library/stow')
-rw-r--r--ARCHIVED/library/stow/stow.sh65
-rw-r--r--ARCHIVED/library/stow/stowAddPkg.sh125
-rw-r--r--ARCHIVED/library/stow/stowPkgExtract.sh54
-rw-r--r--ARCHIVED/library/stow/stowRewriteAbortedPkg.sh64
-rw-r--r--ARCHIVED/library/stow/stowUpdateNoFoldingPkg.sh18
5 files changed, 326 insertions, 0 deletions
diff --git a/ARCHIVED/library/stow/stow.sh b/ARCHIVED/library/stow/stow.sh
new file mode 100644
index 0000000..2a37175
--- /dev/null
+++ b/ARCHIVED/library/stow/stow.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+stowReadArrays () {
+ readarray -t stowPkgs < <(ls -l "$dotfiles" | grep '^d' | awk '{ print $9 }')
+}
+
+abortedPkg () {
+ if [ "$counterAbortedPkg" -gt 0 ]; then
+
+ echo "Количество нераспакованных пакетов: $counterAbortedPkg"
+ echo "Список находится в ~/.dotfiles/abortedPkg.txt"
+
+ elif [ "$1" = "delete" ] && [ -e "$abortedPkgFile" ]; then
+
+ rm -i "$abortedPkgFile"
+
+ fi
+}
+
+startStow () {
+
+ if [ -d "$dotfiles" ]; then
+ echo "✅ Папка .dotfiles есть"
+ else
+ source "$dirArchIsoFiles"/library/cloneDotfiles.sh
+ fi
+
+ abortedPkg "delete"
+ stowReadArrays
+
+ select event in "Stow extract" "Stow update" "Stow add" "Stow adopt" "Back"; do
+ case "$event" in
+ "Stow extract")
+ source "$dirArchIsoFiles"/library/stow/stowPkgExtract.sh
+ break 2
+ ;;
+
+ "Stow update")
+ source "$dirArchIsoFiles"/library/stow/stowUpdateNoFoldingPkg.sh
+ break 2
+ ;;
+
+ "Stow add")
+ source "$dirArchIsoFiles"/library/stow/stowAddPkg.sh
+ break 2
+ ;;
+
+ "Stow adopt")
+ source "$dirArchIsoFiles"/library/stow/stowRewriteAbortedPkg.sh
+ break 2
+ ;;
+
+ "Back")
+ break
+ ;;
+
+ *)
+ echo "Invalid option. Выбери один из предложенных вариантов!"
+ esac
+ done
+
+ abortedPkg
+}
+
+startStow
diff --git a/ARCHIVED/library/stow/stowAddPkg.sh b/ARCHIVED/library/stow/stowAddPkg.sh
new file mode 100644
index 0000000..aaf3687
--- /dev/null
+++ b/ARCHIVED/library/stow/stowAddPkg.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+selectDir () {
+
+ if [ "$choiseDir" = "home" ]; then
+
+ choiseDir="$HOME"
+ readarray files -t < <(ls -lA -d $choiseDir/* | grep -v -f "$patternsHomeDir" | awk '{ print $9 }' | sed '/^[[:space:]]*$/d')
+
+ if [ "$files" = "" ]; then
+ echo "Массив files пустой! Выход..."
+ exit
+ fi
+
+ elif [ "$choiseDir" = "config" ]; then
+
+ choiseDir="$XDG_CONFIG_HOME"
+ readarray files -t < <(ls -lA -d $choiseDir/* | awk '{ print $9 }' | sed '/^[[:space:]]*$/d')
+
+ if [ "$files" = "" ]; then
+ echo "Массив files пустой! Выход..."
+ exit
+ fi
+ fi
+
+}
+
+selectType () {
+
+ echo "Выбери тип нового пакета:"
+ echo -e " - full - это полная копия оригинального пакета;\n - noFolding - частичная копия"
+ select choiseType in full noFolding; do
+
+ if [ "$choiseType" = "full" ]; then
+
+ typePackageDir="full"
+
+ elif [ "$choiseType" = "noFolding" ]; then
+
+ typePackageDir="noFolding"
+
+ fi
+
+ return
+ done
+
+}
+
+stowCreatePkgDir () {
+
+ if [ "$typePackageDir" = "full" ]; then
+
+ mkdir "$dotfiles"/"$namePackage"
+ packageDir="$dotfiles"/"$namePackage"
+
+ elif [ "$typePackageDir" = "noFolding" ]; then
+
+ mkdir "$dotfiles"/"_$namePackage"
+ packageDir="$dotfiles"/"_$namePackage"
+
+ fi
+}
+
+selectFile () {
+
+ echo "Выбери оригинальный файл или директорию для копирования:"
+
+ select file in ${files[@]}; do
+ stowCreatePkgDir
+
+ if [ -d "$file" ]; then
+
+ packageFirstSymbol=${packageDir:30:1}
+
+ if [ "$packageFirstSymbol" = "_" ]; then
+ vifm --select "$file" --on-choose "cp -r %f $packageDir"
+ else
+ cp -r "$file" "$packageDir"
+ fi
+
+ elif [ -f "$file" ]; then
+
+ cp -r "$file" "$packageDir"
+
+ fi
+
+ return
+ done
+}
+
+stowAddPkg () {
+ while :
+ do
+ read -r -p "Введи название нового пакета в ~/.dotfiles: " namePackage
+
+ if [ -d "$dotfiles"/"$namePackage" ]; then
+ echo "Пакет уже существует! Выбери другое название."
+
+ continue
+ fi
+
+ break
+ done
+
+ echo "Оригинальный файл для копии находится в home или .config директории?"
+
+ select choiseDir in home config; do
+
+ if [ "$choiseDir" = "home" ] || [ "$choiseDir" = "config" ]; then
+ selectDir "$choiseDir"
+ selectType
+ selectFile
+ else
+ echo "Invalid option. Выбери один из предложенных вариантов!"
+ fi
+
+ done
+
+ cd "$dotfiles"
+ git add "$packageName"
+
+ echo "Пакет добавлен!"
+}
+
+stowAddPkg
diff --git a/ARCHIVED/library/stow/stowPkgExtract.sh b/ARCHIVED/library/stow/stowPkgExtract.sh
new file mode 100644
index 0000000..ce4794d
--- /dev/null
+++ b/ARCHIVED/library/stow/stowPkgExtract.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+checkPkg () {
+ counterAbortedPkg=$((counterAbortedPkg+1))
+
+ if [ "$counterAbortedPkg" -eq 1 ]; then echo -e "$(date +%d-%m-%Y::%T) \n" >> "$dotfiles"/abortedPkg.txt
+ fi
+
+ echo "Название пакета: $package" >> "$dotfiles"/abortedPkg.txt
+ stow -d "$dotfiles" -nvt ~ "$package" 2>&1 | awk '{ print $11 }' | sed '/^[[:space:]]*$/d' >> "$dotfiles"/abortedPkg.txt
+}
+
+stowNoFolding () {
+ setStatusE true
+
+ stow -d "$dotfiles" --no-folding -nvt ~ "$package"
+
+ if [ $? -eq 1 ]; then
+ setStatusE false
+ checkPkg
+ else
+ setStatusE false
+ stow -d "$dotfiles" --no-folding -vt ~ "$package"
+ fi
+}
+
+stowDir () {
+ setStatusE true
+
+ stow -d "$dotfiles" -nvt ~ "$package"
+
+ if [ $? -eq 1 ]; then
+ setStatusE false
+ checkPkg
+ else
+ setStatusE false
+ stow -d "$dotfiles" -vt ~ "$package"
+ fi
+}
+
+stowPkgExtract () {
+ for package in ${stowPkgs[@]}
+ do
+ packageFirstSymbol=${package:0:1}
+
+ if [ "$packageFirstSymbol" = "_" ]; then
+ stowNoFolding
+ else
+ stowDir
+ fi
+ done
+}
+
+stowPkgExtract
diff --git a/ARCHIVED/library/stow/stowRewriteAbortedPkg.sh b/ARCHIVED/library/stow/stowRewriteAbortedPkg.sh
new file mode 100644
index 0000000..c73a3e5
--- /dev/null
+++ b/ARCHIVED/library/stow/stowRewriteAbortedPkg.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+selectAnswer () {
+ echo "Перезаписать оригинальный пакет?: "
+ select answer in Yes No; do
+ case "$answer" in
+ "Yes")
+ if [ "$1" = "no-folding" ]; then
+ stow -d "$dotfiles" --adopt --no-folding -vt ~ "$package"
+ else
+ stow -d "$dotfiles" --adopt -vt ~ "$package"
+ fi
+
+ git checkout .
+ break
+ ;;
+
+ "No")
+ echo "Выход..."
+ exit
+
+ ;;
+ *)
+ echo "Invalid option. Выбери один из предложенных вариантов!"
+ esac
+ done
+}
+
+stowRewriteAbortedPkg () {
+ select package in ${stowPkgs[@]}; do
+
+ setStatusE true
+
+ packageFirstSymbol=${package:0:1}
+
+ if [ "$packageFirstSymbol" = "_" ]; then
+
+ stow -d "$dotfiles" --no-folding -nvt ~ "$package"
+
+ if [ $? -eq 1 ]; then
+
+ setStatusE false
+ selectAnswer "no-folding"
+
+ fi
+
+ else
+
+ stow -d "$dotfiles" -nvt ~ "$package"
+
+ if [ $? -eq 1 ]; then
+
+ setStatusE false
+ selectAnswer
+
+ fi
+ fi
+
+ echo "Файл успешно перезаписан!"
+ return
+ done
+}
+
+stowRewriteAbortedPkg
diff --git a/ARCHIVED/library/stow/stowUpdateNoFoldingPkg.sh b/ARCHIVED/library/stow/stowUpdateNoFoldingPkg.sh
new file mode 100644
index 0000000..4144bd3
--- /dev/null
+++ b/ARCHIVED/library/stow/stowUpdateNoFoldingPkg.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+source "$dirArchIsoFiles"/stowPkgExtract.sh
+
+stowUpdateNoFoldingPkg () {
+
+ for package in ${stowPkgs[@]}
+ do
+ packageFirstSymbol=${package:0:1}
+
+ if [ "$packageFirstSymbol" = "_" ]; then
+ stowNoFolding
+ fi
+ done
+
+}
+
+stowUpdateNoFoldingPkg