blob: 8df4cde75859cb7842f53ab70bdb05ff8f3171ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
|