Annotation of freem/freem-install.sh, revision 1.2

1.1       snw         1: #!/usr/bin/env bash
                      2: 
                      3: #
1.2     ! snw         4: #   $Id: freem-install.sh,v 1.1 2025/05/06 13:21:20 snw Exp $
1.1       snw         5: #    FreeM source installer
                      6: #
                      7: #  
                      8: #   Author: Serena Willis <snw@coherent-logic.com>
                      9: #    Copyright (C) 1998 MUG Deutschland
                     10: #    Copyright (C) 2023, 2025 Coherent Logic Development LLC
                     11: #
                     12: #
                     13: #   This file is part of FreeM.
                     14: #
                     15: #   FreeM is free software: you can redistribute it and/or modify
                     16: #   it under the terms of the GNU Affero Public License as published by
                     17: #   the Free Software Foundation, either version 3 of the License, or
                     18: #   (at your option) any later version.
                     19: #
                     20: #   FreeM is distributed in the hope that it will be useful,
                     21: #   but WITHOUT ANY WARRANTY; without even the implied warranty of
                     22: #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     23: #   GNU Affero Public License for more details.
                     24: #
                     25: #   You should have received a copy of the GNU Affero Public License
                     26: #   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
                     27: #
1.2     ! snw        28: #   $Log: freem-install.sh,v $
        !            29: #   Revision 1.1  2025/05/06 13:21:20  snw
        !            30: #   Add installer script
        !            31: #
1.1       snw        32: #
                     33: # SPDX-FileCopyrightText:  (C) 2025 Coherent Logic Development LLC
                     34: # SPDX-License-Identifier: AGPL-3.0-or-later
                     35: #
                     36: 
                     37: YN=no
                     38: 
                     39: function yorn()
                     40: {
                     41:     local prompt="$1"
                     42:     local result=""
                     43:     
                     44:     echo -n "${prompt} (y/n): "
                     45:     read -n1 result
                     46:     echo ""
                     47:     
                     48:     case "${result}" in
                     49:         y|Y)
                     50:             YN=y
                     51:             ;;
                     52:         n|N)
                     53:             YN=n
                     54:             ;;
                     55:         *)
                     56:             echo "${result} is not a valid response. Please answer 'y' or 'n'."
                     57:             yorn "${prompt}"
                     58:             ;;
                     59:     esac
                     60: }
                     61: 
                     62: OS=$(uname)
                     63: PGM=$(basename $0)
                     64: 
                     65: if [[ $EUID != 0 ]]
                     66: then
                     67:     yorn "Does your account have sudo privileges?"
                     68:     if [[ "${YN}" != "y" ]]
1.2     ! snw        69:     then
        !            70:         echo "${PGM}:  must have sudo privileges to install FreeM"
1.1       snw        71:         exit 1
                     72:     fi
1.2     ! snw        73: else
        !            74:     echo "${PGM}:  cannot install from superuser account; use your normal user account"
        !            75:     exit 1
1.1       snw        76: fi
                     77: 
                     78: 
                     79: case ${OS} in
                     80: 
                     81:     Linux)
                     82:         FM_AGEN="./autogen.sh"
                     83:         FM_CONF="./configure"
                     84:         FM_MAKE="make -j"
                     85:         FM_MAKEINST="sudo make install"
                     86:         FM_ADDGRP="sudo groupadd freem"
                     87:         FM_ADDUSER="sudo useradd -r -g freem freem"
1.2     ! snw        88:         FM_CHKGRP=$(id -Gn | grep freem | wc -l)
1.1       snw        89:         FM_FIXGRP="sudo usermod -aG freem ${LOGNAME}"
                     90:         ;;
                     91: 
                     92:     *)
                     93:         echo "${PGM}:  ${OS} is not supported"
                     94:         exit 1
                     95:         ;;
                     96:     
                     97: esac
                     98: 
                     99: $FM_AGEN
                    100: $FM_CONF
                    101: $FM_MAKE
                    102: $FM_MAKEINST
                    103: 
                    104: HAVEGRP=$(cat /etc/group | egrep '^freem' | wc -l)
                    105: if [[ ${HAVEGRP} > 0 ]]
                    106: then
                    107:     echo "${PGM}:  already have 'freem' group"
                    108: else
                    109:     echo "${PGM}:  adding 'freem' group"
                    110:     $FM_ADDGRP
                    111: fi
                    112: 
                    113: HAVEUSR=$(cat /etc/passwd | egrep '^freem' | wc -l)
                    114: if [[ ${HAVEUSR} > 0 ]]
                    115: then
                    116:     echo "${PGM}:  already have 'freem' user"
                    117: else
                    118:     echo "${PGM}:  adding 'freem' user"
                    119:     $FM_ADDUSER
                    120: fi
                    121: 
1.2     ! snw       122: if [[ $FM_CHKGRP > 0 ]]
1.1       snw       123: then
                    124:     GRPMSG="${PGM}:  type 'freem' to run FreeM"
                    125:     echo "${PGM}:  ${LOGNAME} is already in the 'freem' group"
                    126: else
                    127:     GRPMSG="${PGM}:  you will need to log out and back in to run FreeM"
                    128:     echo "${PGM}:  adding ${LOGNAME} to the 'freem' group"
                    129:     $FM_FIXGRP    
                    130: fi
                    131: 
                    132: sudo /usr/local/bin/fmadm configure
                    133: 
                    134: echo "${GRPMSG}"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>