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 | 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 | -# < -------------------------------------------------------------------------- | ... | ... |