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