This repository was archived by the owner on Mar 13, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunciones.sh
More file actions
executable file
·149 lines (138 loc) · 4.98 KB
/
funciones.sh
File metadata and controls
executable file
·149 lines (138 loc) · 4.98 KB
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/usr/bin/env bash
# -*- ENCODING: UTF-8 -*-
##
## @author Raúl Caro Pastorino
## @copyright Copyright © 2017 Raúl Caro Pastorino
## @license https://wwww.gnu.org/licenses/gpl.txt
## @email [email protected]
## @web www.fryntiz.es
## @github https://github.com/fryntiz
## @gitlab https://gitlab.com/fryntiz
## @twitter https://twitter.com/fryntiz
##
## Guía de estilos aplicada:
## @style https://github.com/fryntiz/Bash_Style_Guide
############################
## INSTRUCCIONES ##
############################
## Este script tiene como objetivo ofrecer funciones recurrentes de
## forma auxiliar para todos los demás scripts.
###########################
## FUNCIONES ##
###########################
##
## Crea un respaldo del archivo o directorio pasado como parámetro
## @param $* Recibe una serie de elementos a los que crearle un backup
##
crearBackup() {
## Crear directorio Backups si no existiera
if [[ ! -d "$WORKSCRIPT/Backups" ]]; then
mkdir $WORKSCRIPT/Backups
fi
for salvando in $*; do
if [[ -f $salvando ]]; then
echo "Creando Backup del archivo $salvando"
cp "$salvando" "$WORKSCRIPT/Backups/"
elif [[ -d $salvando ]]; then
echo "Creando Backup del directorio $salvando"
cp -R "$salvando" "$WORKSCRIPT/Backups/"
else
echo "No se encuentra $salvando"
fi
done
}
##
## Muestra el texto recibido como parámetro formateado por pantalla
## @param $1 String Recibe la cadena a pintar
##
opciones() {
echo -e "$AZ Opciones Disponibles$CL"
echo -e "$VE $1$CL"
}
##
## Recibe uno o más parámetros con el nombre de los programas a instalar
## @param $* String Nombre de programas a instalar
##
instalarSoftware() {
for programa in $*; do
sudo dnf install -y "$programa"
done
}
##
## Descarga desde el lugar pasado como segundo parámetro y lo guarda con el
## nombre del primer parámetro dentro del directorio temporal "tmp" de este
## repositorio, quedando excluido del mismo control de versiones.
## @param $1 String Nombre del recurso a descargar (Añadir extensión)
## @param $2 String Origen de la descarga (Desde donde descargar)
##
descargar() {
## TODO:
## Comprobar que se reciben 3 parámetros
## Comprobar que no son cadenas vacías
## Comprobar que no son números
## Crear directorio Temporal si no existiera
if [[ ! -d "$WORKSCRIPT/tmp" ]]; then
mkdir $WORKSCRIPT/tmp
fi
echo -e "$VE Descargando$RO $1 $CL"
local REINTENTOS=10
for (( i=1; i<=$REINTENTOS; i++ )); do
rm $WORKSCRIPT/tmp/$1 2>> /dev/null
wget --show-progress "$2" -O "$WORKSCRIPT/tmp/$1" && break
done
}
##
## Recibe un nombre, el repositorio de origen y el directorio destino para
## descargar el repositorio controlando errores y reintentando cuando falle.
## @param $1 String Nombre, es más para informar y registrar log
## @param $2 String Repositorio desde donde descargar
## @param $3 String Lugar donde guardamos el repositorio
##
descargarGIT() {
local reintentos=10
echo -e "$VE Descargando $RO$1$VE desde Repositorio$RO GIT$CL"
if [[ ! -d "$3" ]]; then
for (( i=1; i<=$reintentos; i++ )); do
echo -e "$VE Descargando$RO $1$VE, intento$RO $i$CL"
if [[ $i -eq $reintentos ]]; then
rm -R "$3" 2>> /dev/null
break
fi
git clone "$2" "$3" && break
rm -R "$3" 2>> /dev/null
done
else
echo -e "$RO$1$VE ya está instalado$CL"
echo -e "$VE Se actualizará el repositorio existente de$RO $1$CL"
cd "$3"
git pull origin master
cd "$WORKSCRIPT"
fi
}
##
## Crea un enlace por archivo pasado después de realizar una copia de seguridad ## tomando como punto de referencia el propio repositorio, ruta conf/home/
## donde estarán situado todos los archivos para ser actualizados con
## el repositorio.
## @param $* String Nombre del archivo o directorio dentro del home del user
##
enlazarHome() {
for x in $*; do
echo -e "$VE Creando enlace de$RO $x$CL"
if [[ -h "$HOME/$x" ]]; then ## Si es un enlace
echo -e "$VE Limpiando enlace anterior para$RO $x$CL"
rm "$HOME/$x"
elif [[ -f "$HOME/$x" ]] && ## Si es un archivo y no tiene backup
[[ ! -f "$WORKSCRIPT/Backups/$x" ]]; then
echo -e "$VE Creando enlace para el archivo$RO $HOME$x$CL"
crearBackup "$HOME/$x" && rm "$HOME/$x"
elif [[ -d "$HOME/$x" ]] && ## Si es un directorio y no tiene backup
[[ ! -d "$WORKSCRIPT/Backups/$x" ]]; then
echo -e "$VE Creando enlace para el directorio$RO $HOME$x$CL"
crearBackup "$HOME/$x" && rm -R "$HOME/$x"
else
echo -e "$VE Eliminando $RO$HOME/$x$VE, ya existe$RO Backup$CL"
rm "$HOME/$x"
fi
ln -s "$WORKSCRIPT/conf/home/$x" "$HOME/$x"
done
}