Commit cb3d50dc4e1ebacd7f65c773a050c213d462b242

Authored by edulucio
1 parent ce1bcb26
Exists in master

Atualização pontual em biblioteca! By Questor

Showing 1 changed file with 96 additions and 43 deletions   Show diff stats
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 : 'Trata-se de um módulo que oferece uma série de funcionalidades para 2 : 'Trata-se de um módulo que oferece uma série de funcionalidades para
3 criar um instalador usando "bash". 3 criar um instalador usando "bash".
4 4
5 -Version 1.0.0b 5 +Version 1.1.0b
6 6
7 Apache License 7 Apache License
8 Version 2.0, January 2004 8 Version 2.0, January 2004
@@ -623,6 +623,58 @@ f_get_stderr_stdout() { @@ -623,6 +623,58 @@ f_get_stderr_stdout() {
623 F_GET_STDOUT_R=$t_std 623 F_GET_STDOUT_R=$t_std
624 } 624 }
625 625
  626 +YES_NO_R=0
  627 +f_yes_no() {
  628 + : 'Questiona ao usuário "yes" ou "no" sobre determinado algo.
  629 +
  630 + Args:
  631 + QUESTION_P (str): Questionamento a ser feito.
  632 + WAIT_UNTIL_P (Optional[int]): Esperar até o intervalo informado
  633 + (em segundos). Padrão 0.
  634 + WAIT_UNTIL_RTN_P (Optional[str]): Valor a ser assumido após o intervalo
  635 + em WAIT_UNTIL_P. 1 - Yes; 0 - No. Padrão 1.
  636 +
  637 + Returns:
  638 + YES_NO_R (int): 1 - Yes; 0 - No.
  639 + '
  640 +
  641 + if [ ${EZ_I_SKIP_ON_V} -eq 1 ] ; then
  642 + return 0
  643 + fi
  644 + RESP_V=""
  645 + YES_NO_R=0
  646 + QUESTION_P=$1
  647 + WAIT_UNTIL_P=$2
  648 + WAIT_UNTIL_RTN_P=$3
  649 + if [ -z "$WAIT_UNTIL_RTN_P" ] ; then
  650 + WAIT_UNTIL_RTN_P=1
  651 + fi
  652 + if [ -z "$WAIT_UNTIL_P" ] ; then
  653 + read -e -r -p "$QUESTION_P (y/n) " RESP_V
  654 + else
  655 + if [ ${WAIT_UNTIL_RTN_P} -eq 1 ] ; then
  656 + AUT_ANSWER="y"
  657 + elif [ ${WAIT_UNTIL_RTN_P} -eq 0 ] ; then
  658 + AUT_ANSWER="n"
  659 + fi
  660 +
  661 + # NOTE: O "|| echo \"\"" serve par dar uma quebra de linha se nenhuma
  662 + # resposta foi informada! By Questor
  663 + eval "read -e -t$WAIT_UNTIL_P -r -p \"$QUESTION_P (y/n) (\"$AUT_ANSWER\" in $WAIT_UNTIL_P seconds) \" RESP_V" || echo ""
  664 +
  665 + fi
  666 + if [[ $RESP_V =~ ^([sS]|[yY])$ ]] || ( [ ${WAIT_UNTIL_RTN_P} -eq 1 ] && [ -z "$RESP_V" ] ) ; then
  667 + YES_NO_R=1
  668 + elif [[ $RESP_V =~ ^([nN])$ ]] || ( [ ${WAIT_UNTIL_RTN_P} -eq 0 ] && [ -z "$RESP_V" ] ) ; then
  669 + if [ -n "$RESP_V" ] ; then
  670 + echo "NO!"
  671 + fi
  672 + YES_NO_R=0
  673 + else
  674 + f_yes_no "$1" $2 $3
  675 + fi
  676 +}
  677 +
626 F_BAK_PATH_R="" 678 F_BAK_PATH_R=""
627 F_BAK_MD_R=0 679 F_BAK_MD_R=0
628 f_ez_mv_bak() { 680 f_ez_mv_bak() {
@@ -697,8 +749,31 @@ f_ez_mv_bak() { @@ -697,8 +749,31 @@ f_ez_mv_bak() {
697 fi 749 fi
698 } 750 }
699 751
  752 +f_okay_exit() {
  753 + : '"Printa" uma mensagem de finalização e encerra o processo.
  754 +
  755 + Args:
  756 + EXIT_CAUSE_P (Optional[str]): Causa da finalização.
  757 + '
  758 +
  759 + EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V
  760 + EZ_I_SKIP_ON_V=0
  761 + EXIT_CAUSE_P=$1
  762 + echo ""
  763 + f_open_section "I N F O R M A T I O N !"
  764 + EXIT_MSG_NOW_P="THE EXECUTION WAS TERMINATED!"
  765 + if [ ! -z "$EXIT_CAUSE_P" ] ; then
  766 + EXIT_MSG_NOW_P="$EXIT_MSG_NOW_P INFORMATION: \"$EXIT_CAUSE_P\""
  767 + fi
  768 + echo "$EXIT_MSG_NOW_P"
  769 + echo
  770 + f_close_section
  771 + EZ_I_SKIP_ON_V=$EZ_I_S_ON_HOLDER
  772 + exit 0
  773 +}
  774 +
700 f_error_exit() { 775 f_error_exit() {
701 - : '"Printa" uma mensagem de erro e encerra o instalador. 776 + : '"Printa" uma mensagem de erro e encerra o processo.
702 777
703 Args: 778 Args:
704 ERROR_CAUSE_P (Optional[str]): Causa do erro. 779 ERROR_CAUSE_P (Optional[str]): Causa do erro.
@@ -707,9 +782,9 @@ f_error_exit() { @@ -707,9 +782,9 @@ f_error_exit() {
707 EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V 782 EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V
708 EZ_I_SKIP_ON_V=0 783 EZ_I_SKIP_ON_V=0
709 ERROR_CAUSE_P=$1 784 ERROR_CAUSE_P=$1
710 - echo 785 + echo ""
711 f_open_section "E R R O R !" 786 f_open_section "E R R O R !"
712 - ERROR_MSG_NOW_P="AN ERROR OCCURRED AND THIS INSTALLER WAS CLOSED!" 787 + ERROR_MSG_NOW_P="AN ERROR OCCURRED AND THE EXECUTION WAS TERMINATED!"
713 if [ ! -z "$ERROR_CAUSE_P" ] ; then 788 if [ ! -z "$ERROR_CAUSE_P" ] ; then
714 ERROR_MSG_NOW_P="$ERROR_MSG_NOW_P ERROR: \"$ERROR_CAUSE_P\"" 789 ERROR_MSG_NOW_P="$ERROR_MSG_NOW_P ERROR: \"$ERROR_CAUSE_P\""
715 fi 790 fi
@@ -1277,8 +1352,9 @@ f_get_percent_from() { @@ -1277,8 +1352,9 @@ f_get_percent_from() {
1277 percentagem. 1352 percentagem.
1278 PERCENT_VAL_P (int): Valor de percentagem a ser obtido. 1353 PERCENT_VAL_P (int): Valor de percentagem a ser obtido.
1279 REM_FLOAT_POINT_P (Optional[int]): 0 - Não remove ponto flutuante; 1 - 1354 REM_FLOAT_POINT_P (Optional[int]): 0 - Não remove ponto flutuante; 1 -
1280 - remove ponto flutuante (se o valor obtido for maior ou igual a 1).  
1281 - Padrão 1. 1355 + Remove ponto flutuante (se o valor obtido for maior ou igual a 1).
  1356 + 2 - Remove ponto flutuante (se o valor obtido for maior ou igual a
  1357 + 1) e arredonda para o último dígito significativo. Padrão 1.
1282 1358
1283 Returns: 1359 Returns:
1284 F_GET_PERCENT_FROM_R (int): Porcentagem obtida. 1360 F_GET_PERCENT_FROM_R (int): Porcentagem obtida.
@@ -1296,14 +1372,24 @@ f_get_percent_from() { @@ -1296,14 +1372,24 @@ f_get_percent_from() {
1296 F_GET_PERCENT_FROM_R=$(awk '{printf("%.5f\n",($1*($2/100)))}' <<<" $VAL_GET_PERCENT_P $PERCENT_VAL_P ") 1372 F_GET_PERCENT_FROM_R=$(awk '{printf("%.5f\n",($1*($2/100)))}' <<<" $VAL_GET_PERCENT_P $PERCENT_VAL_P ")
1297 1373
1298 F_GET_PERCENT_FROM_R=${F_GET_PERCENT_FROM_R} 1374 F_GET_PERCENT_FROM_R=${F_GET_PERCENT_FROM_R}
1299 - if [ ${REM_FLOAT_POINT_P} -eq 1 ] ; then 1375 + if [ ${REM_FLOAT_POINT_P} -ge 1 ] ; then
1300 1376
1301 # NOTA: Técnica para comparar valores com ponto flutuante! By Questor 1377 # NOTA: Técnica para comparar valores com ponto flutuante! By Questor
1302 if [ $(awk '{printf($1 >= $2) ? 1 : 0}' <<<" $VAL_GET_PERCENT_P 1 ") -eq 1 ] ; then 1378 if [ $(awk '{printf($1 >= $2) ? 1 : 0}' <<<" $VAL_GET_PERCENT_P 1 ") -eq 1 ] ; then
  1379 + if [ ${REM_FLOAT_POINT_P} -eq 1 ] ; then
1303 1380
1304 - # NOTA: A estratégia abaixo foi utilizada para arredondar o valor  
1305 - # (remover o ponto flutuante)! By Questor  
1306 - F_GET_PERCENT_FROM_R=${F_GET_PERCENT_FROM_R%\.*} 1381 + # NOTA: A estratégia abaixo foi utilizada remover o ponto
  1382 + # flutuante (truncar)! By Questor
  1383 + F_GET_PERCENT_FROM_R=${F_GET_PERCENT_FROM_R%\.*}
  1384 +
  1385 + elif [ ${REM_FLOAT_POINT_P} -eq 2 ] ; then
  1386 +
  1387 + # NOTA: A estratégia abaixo foi utilizada para arredondar o
  1388 + # valor (Ex.: 10.7 -> 11, 10.5 -> 10, 10.4 -> 10...)!
  1389 + # By Questor
  1390 + F_GET_PERCENT_FROM_R=$(awk '{printf("%.0f\n", $1);}' <<<" $F_GET_PERCENT_FROM_R ")
  1391 +
  1392 + fi
1307 fi 1393 fi
1308 fi 1394 fi
1309 } 1395 }
@@ -1622,36 +1708,3 @@ f_instruct() { @@ -1622,36 +1708,3 @@ f_instruct() {
1622 } 1708 }
1623 1709
1624 # < -------------------------------------------------------------------------- 1710 # < --------------------------------------------------------------------------
1625 -  
1626 -# > --------------------------------------------------------------------------  
1627 -# ESQUEMAS CONDICIONAIS!  
1628 -# --------------------------------------  
1629 -  
1630 -YES_NO_R=0  
1631 -f_yes_no() {  
1632 - : 'Questiona ao usuário "yes" ou "no" sobre determinado algo.  
1633 -  
1634 - Args:  
1635 - QUESTION_P (str): Questionamento a ser feito.  
1636 -  
1637 - Returns:  
1638 - YES_NO_R (int): 1 - Yes; 0 - No.  
1639 - '  
1640 -  
1641 - if [ ${EZ_I_SKIP_ON_V} -eq 1 ] ; then  
1642 - return 0  
1643 - fi  
1644 - QUESTION_P=$1  
1645 - YES_NO_R=0  
1646 - read -r -p "$QUESTION_P (y/n) " RESP_V  
1647 - if [[ $RESP_V =~ ^([sS]|[yY])$ ]] ; then  
1648 - YES_NO_R=1  
1649 - elif [[ $RESP_V =~ ^([nN])$ ]] ; then  
1650 - echo "NO!"  
1651 - YES_NO_R=0  
1652 - else  
1653 - f_yes_no "$QUESTION_P"  
1654 - fi  
1655 -}  
1656 -  
1657 -# < --------------------------------------------------------------------------