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>