updated on Tue Jan 17 12:00:36 UTC 2012
[aur-mirror.git] / zpacman / zpacman
blob6db8a7f403350d323942e929fee76a1bae87aa1a
1 #!/bin/bash
3 # #############################################################################################################
5 # Nome: ZPacman
7 # Versão: 2010.06
9 # Descrição: Uma interface simples, usando shell sript e zenity, para o pacman.
10 # Gerenciador de pacotes do Archlinux. Este programa foi baseado nos
11 # códigos do "PacGUI", criado por "jorchube". Obrigado! "jorchube".
13 # Autor: smarch < silveriomm@bol.com.br >
15 # Data: 02/06/2010
17 # #############################################################################################################
20 mkdir -p $HOME/.zpacman
22 TERMINAL=gnome-terminal
24 ################ SOBRE ########################################################################################
25 ###############################################################################################################
27 function sobre {
28 msg="ZPacman, é uma interface gráfica,
29 baseada em Zenity, para o pacman,
30 gerenciador de pacotes do Archlinux.
31 É muito intuitiva, e fácil de usar.
32 É um programa totalmente livre!
33 Você pode usar, modificar e distribuir
34 como bem entender.
35 Porém o autor não se responsabiliza,
36 por qualquer dano que o programa
37 possa causar ao seu sistema.\n
38 Portanto use por sua conta e risco!\n
39 Espero que lhe seja útil!\n\n
40 silveriomm@bol.com.br\n
41 2010"
43 zenity \
44 --info \
45 --title="Sobre o ZPacman..." \
46 --text="$msg"
47 menu
50 # ################### MENU PRINCIPAL ##########################################################################
51 ###############################################################################################################
53 function menu {
54 MENU=$(zenity --list \
55 --title="ZPacman 2010.06" \
56 --text="\n MENU PRINCIPAL\n\n\n Selecione a operação desejada" \
57 --height=300 --width=350 \
58 --column="" --column="" \
59 --hide-header \
60 "1" " Instalar programa" \
61 "2" " Remover programa" \
62 "3" " Localizar programa" \
63 "4" " Atualizar sistema" \
64 "5" " Outras operações" \
65 "6" " Sobre este aplicativo...")
67 case $MENU in
69 1) menu_instalar ;;
70 2) menu_remover ;;
71 3) localiza ;;
72 4) menu_atualiza ;;
73 5) menu_outros ;;
74 6) sobre ;;
76 esac
79 ##################### INSTALAR ################################################################################
80 ###############################################################################################################
82 function menu_instalar {
83 instalar=$(zenity --list \
84 --title="Instalar" \
85 --width=450 \
86 --height=200 \
87 --column="Comando" \
88 --column="Ação" \
89 --text=" Escolha a operação desejada\n" \
90 "S" "Instalar programa pelo repositório" \
91 "U" "Instalar programa local" \
92 "Ss_S" "Procurar e instalar programa pelo repositório") || menu
94 case $instalar in
96 S) instala ;;
97 U) instala_local ;;
98 Ss_S) busca_instala ;;
100 esac
103 # ----------------- Instalar programa pelo repositório --------------------------------------------------------
105 function instala {
106 INSTALA=$(zenity \
107 --entry \
108 --title="Instalar programa pelo repositório" \
109 --width=350 \
110 --text="Digite o nome (ou nomes) dos programas que deseja instalar")
112 if [ $? = 1 ]
113 then
114 menu_instalar
115 else
116 $TERMINAL -t "Instalando programa" -x sudo pacman -S $INSTALA
117 menu_instalar
121 # ------------- Instalar programa local -----------------------------------------------------------------------
123 function instala_local {
124 local=$(zenity \
125 --file-selection \
126 --title="Selecione o arquivo que deseja instalar")
128 if [ $? = 1 ]
129 then
130 menu_instalar
131 else
132 $TERMINAL -t "Instalar programa local" -x sudo pacman -U $local
133 menu_instalar
137 # -------------- Localizar e instalar programa ---------------------------------------------------------------
139 function busca_instala {
140 BUSCA=$(zenity --entry \
141 --title="Pesquisar no repositório" \
142 --width=400 \
143 --text="Digite uma palavra-chave, ou o nome de um programa que deseja encontrar")
145 if [ $? = 1 ]
146 then
147 menu_instalar
148 else
149 RESP_BUSCA=$(pacman -Ss $BUSCA)
150 RESP_BUSCA_SORT=$(echo $RESP_BUSCA | grep / | tr -s [:blank:] "\n" | grep / | tr -s "/" " ")
152 PEGAR=$(zenity --list \
153 --checklist \
154 --title="Resultados encontrados para: $BUSCA " \
155 --text="Selecione os programas que deseja instalar" \
156 --width=500 --height=500 \
157 --column=Instalar \
158 --column=Pacote $RESP_BUSCA_SORT)
159 if [ $? = 1 ]
160 then
161 menu_instalar
162 else
163 PEGAR_INSTALAR=$(echo $PEGAR | tr "|" " ")
164 $TERMINAL -t "Instalando programa" -x sudo pacman -S $PEGAR_INSTALAR
165 menu_instalar
170 ##################### REMOVER PROGRAMA ########################################################################
171 ###############################################################################################################
173 function menu_remover {
174 MENU_REMOVER=$(zenity --list \
175 --title="Remover programa" \
176 --hide-header \
177 --width=350 \
178 --height=200 \
179 --column="" \
180 --column="Opções" \
181 --text=" Escolha a operação desejada" \
182 "1" "Remover programa" \
183 "2" "Localizar e remover programa") || menu
185 case $MENU_REMOVER in
187 1) remover ;;
188 2) busca_remove ;;
190 esac
193 # -------------------- Remover programa -----------------------------------------------------------------------
195 function remover {
196 REMOVER=$(zenity \
197 --entry \
198 --title="Remover programa" \
199 --width=350 \
200 --text="Digite o nome (ou nomes) dos programas que deseja remover")
202 if [ $? = 1 ]
203 then
204 menu_remover
205 else
206 $TERMINAL -t "Remover programa" -x sudo pacman -Rsc $REMOVER
207 menu_remover
211 # -------------- Localizar e remover programa -----------------------------------------------------------------
213 function busca_remove {
214 BUSCA=$(zenity --entry \
215 --title="Pesquisar no repositório" \
216 --width=400 \
217 --text="Digite uma palavra-chave, ou o nome de um programa que deseja remover")
219 if [ $? = 1 ]
220 then
221 menu_remover
222 else
223 RESP_BUSCA=$(pacman -Ss $BUSCA)
224 RESP_BUSCA_SORT=$(echo $RESP_BUSCA | grep / | tr -s [:blank:] "\n" | grep / | tr -s "/" " ")
226 PEGAR=$(zenity --list \
227 --checklist \
228 --title="Resultados encontrados para: $BUSCA " \
229 --text="Selecione os programas que deseja remover" \
230 --width=350 --height=500 \
231 --column=Instalar \
232 --column=Pacote $RESP_BUSCA_SORT)
233 if [ $? = 1 ]
234 then
235 menu_remover
236 else
237 PEGAR_REMOVER=$(echo $PEGAR | tr "|" " ")
238 $TERMINAL -t "Localizar e remover programa" -x sudo pacman -Rsc $PEGAR_REMOVER
239 menu_remover
244 ################### LOCALIZAR PROGRAMA ########################################################################
245 ###############################################################################################################
247 function localiza {
248 localiza=$(zenity \
249 --entry \
250 --title="Localizar programa" \
251 --width=350 \
252 --text="Digite uma palavra-chave, ou o nome do programa que deseja encontrar")
254 if [ $? = 1 ]
255 then
256 menu
257 else
258 resp_localiza=$(pacman -Ss $localiza)
260 echo "$resp_localiza" |
261 zenity --text-info \
262 --width=500 --height=500 \
263 --title="Resultados encontrados para: $localiza "
264 menu
268 #################### ATUALIZAR SISTEMA ########################################################################
269 ###############################################################################################################
271 function menu_atualiza {
272 atualiza=$(zenity \
273 --list \
274 --title="Atualizar sistema" \
275 --width=400 \
276 --height=200 \
277 --column="Comando" \
278 --column="Ação" \
279 --text=" Escolha a operação desejada" \
280 "Syu" "Atualizar sistema" \
281 "Sy" "Atualizar somente a base de dados" \
282 "Syy" "Forçar a atualização da base de dados") || menu
284 case $atualiza in
286 Syu) $TERMINAL -t "Atualizando sistema" -x sudo pacman -Syu
287 menu ;;
289 Sy) $TERMINAL -t "Atualizando base de dados" -x sudo pacman -Sy
290 menu ;;
292 Syy) $TERMINAL -t "Atualizando base de dados" -x sudo pacman -Syy
293 menu ;;
294 esac
297 ################## OUTRAS OPERAÇÕES ###########################################################################
298 ###############################################################################################################
300 function menu_outros {
301 MENU_OUTROS=$(zenity --list \
302 --title="Outras operações" \
303 --text=" Escolha a operação desejada" \
304 --hide-header \
305 --width=350 \
306 --height=300 \
307 --column="" \
308 --column="Opções" \
309 "1" "Limpar cache" \
310 "2" "Informações de programas instalados" \
311 "3" "Lista de pacotes orfãos" \
312 "4" "Criar e instalar pacote" \
313 "5" "Editar /etc/rc.conf" \
314 "6" "Editar /etc/pacman.conf" \
315 "7" "Editar /etc/pacman.d/mirrorlist" \
316 "8" "Restaurar arquivos" \
317 "9" "Desbloquear base de dados") || menu
319 case $MENU_OUTROS in
321 1) limpar ;;
322 2) info ;;
323 3) lista ;;
324 4) makepkg ;;
325 5) rcconf ;;
326 6) pacconf ;;
327 7) mirror ;;
328 8) menu_restaura ;;
329 9) destrava ;;
330 esac
333 # ------------- Limpar cache ----------------------------------------------------------------------------------
335 function limpar {
336 LIMPAR=$(zenity \
337 --list \
338 --title="Limpar cache" \
339 --text=" Escolha a operação desejada" \
340 --width=380 \
341 --height=170 \
342 --column="Comando" \
343 --column="Ação" \
344 "Sc" "Limpar pacotes antigos do cache" \
345 "Scc" "Apagar todos os pacotes do cache") || menu_outros
347 case $LIMPAR in
349 Sc) $TERMINAL -t "Limpando cache" -x sudo pacman -Sc
350 menu_outros ;;
351 Scc) $TERMINAL -t "Limpando cache" -x sudo pacman -Scc
352 menu_outros ;;
354 esac
357 # ----------- Informações de programas instalados -------------------------------------------------------------
359 function info {
360 INFO=$(zenity \
361 --entry \
362 --title="Informações de programas instalados" \
363 --text="Digite o nome do programa, para saber mais informações sobre o mesmo")
365 if [ $? = 1 ]
366 then
367 menu_outros
368 else
369 RESP_INFO=$(pacman -Qi $INFO)
370 echo "$RESP_INFO" |
371 zenity --text-info \
372 --width=500 --height=500 \
373 --title="Informações do programa: $INFO "
374 menu_outros
378 # --------------- Lista de pacotes orfãos ---------------------------------------------------------------------
380 function lista {
381 pacman -Qdt | zenity --title="Lista de pacotes orfãos" --text-info
382 menu_outros
385 # ------------ Criar e instalar pacote ------------------------------------------------------------------------
387 function makepkg {
388 PKGDIR=$(zenity \
389 --file-selection \
390 --directory \
391 --title="Selecione o diretório onde o arquivo PKGBUILD está localizado")
393 if [ $? = 1 ]
394 then
395 menu_outros
396 else
397 $TERMINAL -t "Criar e instalar pacote" --working-directory=$PKGDIR -x makepkg -s
398 if [ ! $(ls $PKGDIR | grep pkg.tar.xz) ]
399 then
400 zenity \
401 --error \
402 --title="Criar e instalar pacote" \
403 --text="Hove um erro ao criar o pacote, nenhum pacote foi criado"
404 else
405 zenity \
406 --question \
407 --title="Criar e instalar pacote" \
408 --text="Você gostaria de instalar o novo pacote?"
409 if [ $? = 1 ]
410 then
411 menu_outros
412 else
413 $TERMINAL -t "Criar e instalar pacote" -x sudo pacman -U $PKGDIR/*.pkg.tar.xz
414 zenity --info \
415 --title="Criar e instalar pacote" \
416 --text="O Pacote foi criado e instalado com sucesso"
417 menu_outros
423 # ------------ Editar /etc/rc.conf --------------------------------------------------------------------------------
425 function rcconf {
426 RCCONF=$(zenity \
427 --question \
428 --width=400 \
429 --title="ATENÇÃO! ISTO PODE DANIFICAR O SISTEMA!" \
430 --text="Tem certeza? Editar o arquivo /etc/rc.conf agora?")
432 if [ $? = 1 ]
433 then
434 menu_outros
435 else
436 cp /etc/rc.conf $HOME/.zpacman/rc.conf.backup &&
437 gksu gedit /etc/rc.conf
438 zenity \
439 --title="Editar /etc/rc.conf" \
440 --info \
441 --text="O Arquivo /etc/rc.conf\n foi modificado com sucesso!"
442 menu_outros
446 # ------------ Editar /etc/pacman.conf ----------------------------------------------------------------------------
448 function pacconf {
449 PACCONF=$(zenity \
450 --question \
451 --width=400 \
452 --title="ATENÇÃO! ISTO PODE DANIFICAR O SISTEMA!" \
453 --text="Tem certeza? Editar o arquivo /etc/pacman.conf agora?")
455 if [ $? = 1 ]
456 then
457 menu_outros
458 else
459 cp /etc/pacman.conf $HOME/.zpacman/pacman.conf.backup &&
460 gksu gedit /etc/pacman.conf
461 zenity \
462 --title="Editar /etc/pacman.conf" \
463 --info \
464 --text="O Arquivo /etc/pacman.conf\n foi modificado com sucesso!"
465 menu_outros
469 # ------------ Editar /etc/pacman.d/mirrorlist ---------------------------------------------------------------
471 function mirror {
472 MIRROR=$(zenity \
473 --question \
474 --width=400 \
475 --title="ATENÇÃO! ISTO PODE DANIFICAR O SISTEMA!" \
476 --text="Tem certeza? Editar o Arquivo /etc/pacman.d/mirrorlist agora?")
478 if [ $? = 1 ]
479 then
480 menu_outros
481 else
482 cp /etc/pacman.d/mirrorlist $HOME/.zpacman/mirrorlist.backup &&
483 gksu gedit /etc/pacman.d/mirrorlist
484 zenity \
485 --title="Editar /etc/pacman.d/mirrorlist" \
486 --info \
487 --text="O Arquivo /etc/pacman.d/mirrorlist\n foi modificado com sucesso!"
488 menu_outros
492 # ------------------- Restaurar arquivos ----------------------------------------------------------------------
494 function menu_restaura {
495 MENU_RESTAURA=$(zenity --list \
496 --title="Restaurar arquivos" \
497 --text=" Escolha a operação desejada" \
498 --hide-header \
499 --width=300 \
500 --height=150 \
501 --column="" \
502 --column="Opções" \
503 "1" "Restaurar /etc/rc.conf" \
504 "2" "Restaurar /etc/pacman.conf" \
505 "3" "Restaurar /etc/pacman.d/mirrorlist") || menu_outros
507 case $MENU_RESTAURA in
509 1) rest_rconf ;;
510 2) rest_pacmanconf ;;
511 3) rest_mirror ;;
513 esac
516 # ------------ Restaurar /etc/rc.conf -------------------------------------------------------------------------
518 function rest_rconf {
519 REST_RCONF=$(zenity \
520 --question \
521 --width=400 \
522 --title="Restaurar arquivo /etc/rc.conf" \
523 --text="Tem certeza? Você quer restaurar o arquivo /etc/rc.conf agora?")
525 if [ $? = 1 ]
526 then
527 menu_restaura
528 else
529 gksu cp $HOME/.zpacman/rc.conf.backup /etc/rc.conf
530 zenity --info --title="Restaurar arquivo" --text="O arquivo /etc/rc.conf foi restaurado\ncom sucesso"
531 menu_restaura
535 # ------------------------ Restaurar /etc/pacman.conf ---------------------------------------------------------
537 function rest_pacmanconf {
538 REST_PACMANCONF=$(zenity \
539 --question \
540 --width=400 \
541 --title="Restaurar arquivo /etc/pacman.conf" \
542 --text="Tem certeza? Você Quer Restaurar o Arquivo\n /etc/pacman.conf agora?")
544 if [ $? = 1 ]
545 then
546 menu_restaura
547 else
548 gksu cp $HOME/.zpacman/pacman.conf.backup /etc/pacman.conf
549 zenity --info --title="Restaurar arquivo" --text="O arquivo /etc/pacman.conf foi restaurado\ncom sucesso"
550 menu_restaura
554 # ------------------------ Restaurar /etc/pacman.d/mirrorlist -------------------------------------------------
556 function rest_mirror {
557 zenity \
558 --question \
559 --width=400 \
560 --title="Restaurar Arquivo /etc/pacman.d/mirrorlist" \
561 --text="Tem certeza? Você Quer Restaurar\no Arquivo /etc/pacman.d/mirrorlist Agora?"
563 if [ $? = 1 ]
564 then
565 menu_restaura
566 else
567 gksu cp $HOME/.zpacman/mirrorlist.backup /etc/pacman.d/mirrorlist
568 zenity --info --title="Restaurar Arquivo" --text="O arquivo /etc/pacman.d/mirrorlist\nfoi restaurado com sucesso"
569 menu_restaura
573 # -------------- Desbloquear base de dados --------------------------------------------------------------------
575 function destrava {
576 zenity --question \
577 --title="Desbloquear base de dados" \
578 --text="Gostaria de desbloquear a base de dados agora?"
580 if [ $? = 1 ]
581 then
582 menu_outros
583 else
584 gksu rm /var/lib/pacman/db.lck
585 zenity --info --title="Desbloquear base de dados" --text="A base de dados foi desbloqueada"
586 menu_outros
590 menu