Commit cb3d50dc4e1ebacd7f65c773a050c213d462b242
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
ez_i.bash
@@ -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 | -# < -------------------------------------------------------------------------- |