2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
9 # Copyright 2024 Ian Kelling
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
15 # http://www.apache.org/licenses/LICENSE-2.0
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
25 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
27 [[ $EUID == 0 ]] ||
exec sudo
"$BASH_SOURCE" "$@"
32 Install or uninstall files to /usr/local/bin
35 -u|--uninstall Uninstall. default is to install
36 -h|--help Print help and exit.
38 Note: Uses GNU getopt options parsing style
43 uninstall
=false
# default
44 temp
=$
(getopt
-l help,uninstall
,dry-run hun
"$@") || usage
1
48 -n|
--dry-run) dry
=true
; shift ;;
49 -u|
--uninstall) uninstall
=true
; shift ;;
52 *) echo "$0: Internal error! unexpected args: $*" ; exit 1 ;;
57 x
="$(readlink -f "$BASH_SOURCE")"; cd ${x%/*} # directory of this file
61 if [[ -x $f && ! -d $f && ! -L $f && $f != setup
]]; then
68 echo "setup dry run: cd /usr/local/bin"
69 echo "setup dry run: rm -fv ${files[*]}"
76 echo "setup dry run: install ${files[*]} /usr/local/bin"
78 install -C ${files[@]} /usr
/local
/bin