aboutsummaryrefslogtreecommitdiff
path: root/library/stow/stowAddPkg.sh
blob: 6dc586bcf176347986dff81d7acaa2e73f6901d5 (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 
      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

  echo "Пакет добавлен!"
}

stowAddPkg