-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit_menu.sh
156 lines (134 loc) · 4.2 KB
/
git_menu.sh
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
150
151
152
153
154
155
156
#!/bin/bash
#------------------------------------------------------
# PALETA DE COLORES
#------------------------------------------------------
#setaf para color de letras/setab: color de fondo
red=`tput setaf 1`;
green=`tput setaf 2`;
blue=`tput setaf 4`;
bg_blue=`tput setab 4`;
reset=`tput sgr0`;
bold=`tput setaf bold`;
#------------------------------------------------------
# VARIABLES GLOBALES
#------------------------------------------------------
#proyectoActual=$(dirname "$0");
proyectoActual=$(pwd);
#------------------------------------------------------
# DISPLAY MENU
#------------------------------------------------------
imprimir_menu () {
imprimir_encabezado "\t S U P E R - M E N U ";
echo -e "\t\t El proyecto actual es:";
echo -e "\t\t $proyectoActual";
echo -e "\t\t";
echo -e "\t\t Opciones:";
echo "";
echo -e "\t\t\t a. Ver estado del proyecto";
echo -e "\t\t\t b. Guardar cambios";
echo -e "\t\t\t c. Actualizar repo";
echo -e "\t\t\t f. Abrir en terminal";
echo -e "\t\t\t g. Abrir en carpeta";
echo -e "\t\t\t d. Cambiar proyecto";
echo -e "\t\t\t q. Salir";
echo "";
echo -e "Escriba la opción y presione ENTER";
}
#------------------------------------------------------
# FUNCTIONES AUXILIARES
#------------------------------------------------------
imprimir_encabezado () {
clear;
#Se le agrega formato a la fecha que muestra
#Se agrega variable $USER para ver que usuario está ejecutando
echo -e "`date +"%d-%m-%Y %T" `\t\t\t\t\t USERNAME:$USER";
echo "";
#Se agregan colores a encabezado
echo -e "\t\t ${bg_blue} ${red} ${bold}--------------------------------------\t${reset}";
echo -e "\t\t ${bold}${bg_blue}${red}$1\t\t${reset}";
echo -e "\t\t ${bg_blue}${red} ${bold} --------------------------------------\t${reset}";
echo "";
}
esperar () {
echo "";
echo -e "Presione enter para continuar";
read ENTER ;
}
malaEleccion () {
echo -e "Selección Inválida ..." ;
}
decidir () {
echo $1;
while true; do
echo "desea ejecutar? (s/n)";
read respuesta;
case $respuesta in
[Nn]* ) break;;
[Ss]* ) eval $1
break;;
* ) echo "Por favor tipear S/s ó N/n.";;
esac
done
}
#------------------------------------------------------
# FUNCTIONES del MENU
#------------------------------------------------------
a_funcion () {
imprimir_encabezado "\tOpción a. Ver estado del proyecto";
echo "---------------------------"
echo "Somthing to commit?"
decidir "cd $proyectoActual; git status";
echo "---------------------------"
echo "Incoming changes (need a pull)?"
decidir "cd $proyectoActual; git fetch origin"
decidir "cd $proyectoActual; git log HEAD..origin --oneline"
}
b_funcion () {
imprimir_encabezado "\tOpción b. Guardar cambios";
decidir "cd $proyectoActual; git add -A";
echo "Ingrese mensaje para el commit:";
read mensaje;
decidir "cd $proyectoActual; git commit -m \"$mensaje\"";
decidir "cd $proyectoActual; git push";
}
c_funcion () {
imprimir_encabezado "\tOpción c. Actualizar repo";
decidir "cd $proyectoActual; git pull";
}
d_funcion () {
imprimir_encabezado "\tOpción d. Cambiar proyecto";
echo "Ingrese full path del nuevo proyecto:"
read fullPath;
echo "Cambiando a proyecto $fullPath";
decidir "proyectoActual=$fullPath";
}
f_funcion () {
imprimir_encabezado "\tOpción f. Abrir en terminal";
decidir "cd $proyectoActual; xterm &";
}
g_funcion () {
imprimir_encabezado "\tOpción g. Abrir en carpeta";
decidir "gnome-open $proyectoActual &";
}
#------------------------------------------------------
# LOGICA PRINCIPAL
#------------------------------------------------------
while true
do
# 1. mostrar el menu
imprimir_menu;
# 2. leer la opcion del usuario
read opcion;
case $opcion in
a|A) a_funcion;;
b|B) b_funcion;;
c|C) c_funcion;;
d|D) d_funcion;;
e|E) e_funcion;;
f|F) f_funcion;;
g|G) g_funcion;;
q|Q) break;;
*) malaEleccion;;
esac
esperar;
done