Commit fca05c1f3932992360d60844a65c1e163a22bbb6
1 parent
7e19870e
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 | 2 | : 'Trata-se de um módulo que oferece uma série de funcionalidades para |
| 3 | 3 | criar um instalador usando "bash". |
| 4 | 4 | |
| 5 | -Version 1.0.0b | |
| 5 | +Version 1.1.0b | |
| 6 | 6 | |
| 7 | 7 | Apache License |
| 8 | 8 | Version 2.0, January 2004 |
| ... | ... | @@ -623,6 +623,58 @@ f_get_stderr_stdout() { |
| 623 | 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 | 678 | F_BAK_PATH_R="" |
| 627 | 679 | F_BAK_MD_R=0 |
| 628 | 680 | f_ez_mv_bak() { |
| ... | ... | @@ -697,8 +749,31 @@ f_ez_mv_bak() { |
| 697 | 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 | 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 | 778 | Args: |
| 704 | 779 | ERROR_CAUSE_P (Optional[str]): Causa do erro. |
| ... | ... | @@ -707,9 +782,9 @@ f_error_exit() { |
| 707 | 782 | EZ_I_S_ON_HOLDER=$EZ_I_SKIP_ON_V |
| 708 | 783 | EZ_I_SKIP_ON_V=0 |
| 709 | 784 | ERROR_CAUSE_P=$1 |
| 710 | - echo | |
| 785 | + echo "" | |
| 711 | 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 | 788 | if [ ! -z "$ERROR_CAUSE_P" ] ; then |
| 714 | 789 | ERROR_MSG_NOW_P="$ERROR_MSG_NOW_P ERROR: \"$ERROR_CAUSE_P\"" |
| 715 | 790 | fi |
| ... | ... | @@ -1277,8 +1352,9 @@ f_get_percent_from() { |
| 1277 | 1352 | percentagem. |
| 1278 | 1353 | PERCENT_VAL_P (int): Valor de percentagem a ser obtido. |
| 1279 | 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 | 1359 | Returns: |
| 1284 | 1360 | F_GET_PERCENT_FROM_R (int): Porcentagem obtida. |
| ... | ... | @@ -1296,14 +1372,24 @@ f_get_percent_from() { |
| 1296 | 1372 | F_GET_PERCENT_FROM_R=$(awk '{printf("%.5f\n",($1*($2/100)))}' <<<" $VAL_GET_PERCENT_P $PERCENT_VAL_P ") |
| 1297 | 1373 | |
| 1298 | 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 | 1377 | # NOTA: Técnica para comparar valores com ponto flutuante! By Questor |
| 1302 | 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 | 1393 | fi |
| 1308 | 1394 | fi |
| 1309 | 1395 | } |
| ... | ... | @@ -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 | -# < -------------------------------------------------------------------------- | ... | ... |