From 8acf415fbeb151120f086824a45021c2595520d8 Mon Sep 17 00:00:00 2001 From: blueingreen68 Date: Wed, 27 Dec 2023 18:27:51 +0500 Subject: update files --- install.sh | 248 ++------------------------------- library/cloneDotfiles.sh | 4 - library/createDefaultDirs.sh | 8 ++ library/stow.sh | 79 ----------- library/stow/stow.sh | 64 +++++++++ library/stow/stowAddPkg.sh | 122 ++++++++++++++++ library/stow/stowPkgExtract.sh | 54 +++++++ library/stow/stowRewriteAbortedPkg.sh | 63 +++++++++ library/stow/stowUpdateNoFoldingPkg.sh | 18 +++ library/yaySetupPkg.sh | 2 - pkglist.txt | 1 + 11 files changed, 341 insertions(+), 322 deletions(-) create mode 100644 library/createDefaultDirs.sh delete mode 100644 library/stow.sh create mode 100644 library/stow/stow.sh create mode 100644 library/stow/stowAddPkg.sh create mode 100644 library/stow/stowPkgExtract.sh create mode 100644 library/stow/stowRewriteAbortedPkg.sh create mode 100644 library/stow/stowUpdateNoFoldingPkg.sh diff --git a/install.sh b/install.sh index b186e49..255efe8 100755 --- a/install.sh +++ b/install.sh @@ -1,9 +1,9 @@ #!/bin/bash -dirArchIsoFiles=~/archisofiles -dotfiles=~/.dotfiles -abortedPkgFile=~/.dotfiles/abortedPkg.txt -patternsHomeDir=~/archisofiles/patternsHomeDir.txt +dirArchIsoFiles=$HOME/archisofiles +dotfiles=$HOME/.dotfiles +abortedPkgFile=$HOME/.dotfiles/abortedPkg.txt +patternsHomeDir=$HOME/archisofiles/patternsHomeDir.txt counterAbortedPkg=0 setStatusE () { @@ -16,211 +16,8 @@ setStatusE () { } -setStatusE false - -abortedPkg () { - - if [ "$counterAbortedPkg" -gt 0 ]; then - echo "Количество нераспакованных пакетов: $counterAbortedPkg" - echo "Список находится в ~/.dotfiles/abortedPkg.txt" - elif [ "$1" = "delete" ] && [ -e "$abortedPkgFile" ]; then - rm -i "$abortedPkgFile" - fi - -} - -createStowPkgDir () { - - 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 - createStowPkgDir - - 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 -} - -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 - -} - - -addPackage () { - - 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 - case "$choiseDir" in - home) - selectDir "$choiseDir" - selectType - selectFile - - break - ;; - - config) - selectDir "$choiseDir" - selectType - selectFile - - break - ;; - - *) - echo "Invalid option... Выход" - exit - ;; - esac - done - - echo "Готово!" -} - -createDefaultDirs () { - mkdir $HOME/{downloads,images,projects,torrents,video,shotcut,music} - - mkdir $HOME/video/{all-videos,translated-videos} -} - -rewriteAbortedPackage () { - select package in ${stowPkgs[@]}; do - - setStatusE true - - packageFirstSymbol=${package:0:1} - - if [ "$packageFirstSymbol" = "_" ]; then - - stow -d "$dotfiles" --no-folding -nvt ~ "$package" | awk '{ print $11 }' | sed '/^[[:space:]]*$/d' - - if [ $? -eq 1 ]; then - - setStatusE false - read -r -p "Перезаписать оригинальный пакет?" answer - - fi - - else - - stow -d "$dotfiles" -nvt ~ "$package" | awk '{ print $11 }' | sed '/^[[:space:]]*$/d' - - if [ $? -eq 1 ]; then - - setStatusE false - read -r -p "Перезаписать оригинальный пакет?" answer - - select answer in Yes No; do - - if [ "$answer" = "Yes" ]; then - - stow -d "$dotfiles" --adopt -vt ~ "$package" - - elif [ "$answer" = "No" ]; then - - echo "Выход..." - exit - - fi - - done - fi - fi - - - echo "Файл успешно перезаписан!" - done -} - startSetup () { - abortedPkg "delete" - - select event in "Yay setup packages" "Stow" StowUpdate AddPackage CreateDefaultDirs; do + select event in "Yay setup packages" "Stow" "Create default home dirs"; do case $event in "Yay setup packages") source "$dirArchIsoFiles"/library/yaySetupPkg.sh @@ -228,47 +25,24 @@ startSetup () { break ;; - Stow) - source "$dirArchIsoFiles"/library/cloneDotfiles.sh - stowPkgExtract - - break + "Stow") + source "$dirArchIsoFiles"/library/stow/stow.sh + echo "Returned. Нажми для отображения меню или для выхода." ;; - StowUpdate) - stowUpdateNoFoldingPkg - - break - ;; - - AddPackage) - addPackage - - break - ;; - - CreateDefaultDirs) - createDefaultDirs + "Create default home dirs") + source "$dirArchIsoFiles"/library/CreateDefaultDirs.sh break ;; - AdoptPackage) - readArrays - rewriteAbortedPackage - - break - ;; - *) echo "Invalid option... Выход" exit ;; esac done - - abortedPkg } -# Установка +setStatusE false startSetup diff --git a/library/cloneDotfiles.sh b/library/cloneDotfiles.sh index c18712c..7924372 100755 --- a/library/cloneDotfiles.sh +++ b/library/cloneDotfiles.sh @@ -1,17 +1,14 @@ #!/bin/bash openKeepass () { - wget https://yadi.sk/d/o4TMFnHFobxTsw -O "$dirArchIsoFiles"/Passwords.kdbx setStatusE true keepassxc-cli clip "$dirArchIsoFiles"/Passwords.kdbx github 0 -a token-cli - } cloneDotfiles () { - while : do openKeepass @@ -26,7 +23,6 @@ cloneDotfiles () { cd git clone https://blueingreen68@github.com/blueingreen68/.dotfiles wl-copy -c - } cloneDotfiles diff --git a/library/createDefaultDirs.sh b/library/createDefaultDirs.sh new file mode 100644 index 0000000..2665db6 --- /dev/null +++ b/library/createDefaultDirs.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +createDefaultDirs () { + mkdir $HOME/{downloads,images,projects,torrents,video,shotcut,music} + mkdir $HOME/video/{all-videos,translated-videos} +} + +createDefaultDirs diff --git a/library/stow.sh b/library/stow.sh deleted file mode 100644 index cd6a0da..0000000 --- a/library/stow.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash - -readArrays () { - readarray -t stowPkgs < <(ls -l "$dotfiles" | grep '^d' | awk '{ print $9 }') -} - -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 - -} - -stowUpdateNoFoldingPkg () { - - for package in ${stowPkgs[@]} - do - packageFirstSymbol=${package:0:1} - - if [ "$packageFirstSymbol" = "_" ]; then - stowNoFolding - fi - done - -} - -readArrays -stowPkgExtract diff --git a/library/stow/stow.sh b/library/stow/stow.sh new file mode 100644 index 0000000..9913831 --- /dev/null +++ b/library/stow/stow.sh @@ -0,0 +1,64 @@ +#!/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 () { + abortedPkg "delete" + stowReadArrays + + if [ -d "$dotfiles" ]; then + echo "✅ Папка .dotfiles есть" + else + source $HOME/"$dirArchIsoFiles"/library/cloneDotfiles.sh + fi + + select event in "Stow extract" "Stow update" "Stow add" "Stow adopt" "Back"; do + case "$event" in + "Stow extract") + source $HOME/"$dirArchIsoFiles"/library/stow/stowPkgExtract.sh + break 2 + ;; + + "Stow update") + source $HOME/"$dirArchIsoFiles"/library/stow/stowUpdateNoFoldingPkg.sh + break 2 + ;; + + "Stow add") + source $HOME/"$dirArchIsoFiles"/library/stow/stowAddPkg.sh + break 2 + ;; + + "Stow adopt") + source $HOME/"$dirArchIsoFiles"/library/stow/stowRewriteAbortedPkg.sh + break 2 + ;; + + "Back") + break + ;; + + *) + echo "Invalid option. Выбери один из предложенных вариантов!" + esac + done + + abortedPkg +} + +startStow diff --git a/library/stow/stowAddPkg.sh b/library/stow/stowAddPkg.sh new file mode 100644 index 0000000..8df4cde --- /dev/null +++ b/library/stow/stowAddPkg.sh @@ -0,0 +1,122 @@ +#!/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 + createStowPkgDir + + 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 + + echo "Пакет добавлен!" +} + +stowAddPkg diff --git a/library/stow/stowPkgExtract.sh b/library/stow/stowPkgExtract.sh new file mode 100644 index 0000000..ce4794d --- /dev/null +++ b/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/library/stow/stowRewriteAbortedPkg.sh b/library/stow/stowRewriteAbortedPkg.sh new file mode 100644 index 0000000..40ff9d9 --- /dev/null +++ b/library/stow/stowRewriteAbortedPkg.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +selectAnswer () { + select answer in Yes No; do + case "$answer" in + "Yes") + if [ "$1" = "no-folding" ] + stow -d "$dotfiles" --adopt --no-folding -vt ~ "$package" + else + stow -d "$dotfiles" --adopt -vt ~ "$package" + fi + + 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" | awk '{ print $11 }' | sed '/^[[:space:]]*$/d' + + if [ $? -eq 1 ]; then + + setStatusE false + read -r -p "Перезаписать оригинальный пакет?" answer + selectAnswer "no-folding" + + fi + + else + + stow -d "$dotfiles" -nvt ~ "$package" | awk '{ print $11 }' | sed '/^[[:space:]]*$/d' + + if [ $? -eq 1 ]; then + + setStatusE false + read -r -p "Перезаписать оригинальный пакет?" answer + selectAnswer + + fi + fi + + echo "Файл успешно перезаписан!" + + done +} + +stowRewriteAbortedPkg diff --git a/library/stow/stowUpdateNoFoldingPkg.sh b/library/stow/stowUpdateNoFoldingPkg.sh new file mode 100644 index 0000000..e5d3bbc --- /dev/null +++ b/library/stow/stowUpdateNoFoldingPkg.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source $HOME/"$dirArchIsoFiles"/stowPkgExtract.sh + +stowUpdateNoFoldingPkg () { + + for package in ${stowPkgs[@]} + do + packageFirstSymbol=${package:0:1} + + if [ "$packageFirstSymbol" = "_" ]; then + stowNoFolding + fi + done + +} + +stowUpdateNoFoldingPkg diff --git a/library/yaySetupPkg.sh b/library/yaySetupPkg.sh index b9d72c2..30a4055 100755 --- a/library/yaySetupPkg.sh +++ b/library/yaySetupPkg.sh @@ -1,5 +1,4 @@ yaySetupPkg () { - cd git clone https://aur.archlinux.org/yay @@ -10,7 +9,6 @@ yaySetupPkg () { rm -rf $HOME/yay yay -S --needed - < "$dirArchIsoFiles"/pkglist.txt - } yaySetupPkg diff --git a/pkglist.txt b/pkglist.txt index f484fe4..d63a512 100644 --- a/pkglist.txt +++ b/pkglist.txt @@ -11,6 +11,7 @@ code deepl-electron-bin deluge efibootmgr +expect firefox font-manager foot -- cgit