#!/bin/bash # I, Ian Kelling, follow the GNU license recommendations at # https://www.gnu.org/licenses/license-recommendations.en.html. They # recommend that small programs, < 300 lines, be licensed under the # Apache License 2.0. This file contains or is part of one or more small # programs. If a small program grows beyond 300 lines, I plan to switch # its license to GPL. # Copyright 2024 Ian Kelling # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. source /a/bin/bash-bear-trap/bash-bear e() { echo "$*"; "$@"; } lnf() { /a/bin/lnf/lnf "$@"; } shopt -s nullglob shopt -s extglob cd /a/exe declare -A existing for f in *; do existing[$f]=t done cd /a/bin # sourcing instead of calling script changes runtime from .47s to .36s source /a/bin/lnf/lnf >/dev/null ||: for x in !(unused|distro-setup|unfinished|queue|bash-template|buildscripts|crons|data|examples|log-quiet); do [[ -e $x/.git ]] || continue for y in "$x"/*; do f=${y##*/} if [[ -x $y && ! -d $y ]]; then unset "existing[$f]" lnf -v /a/bin/$y /a/exe fi done done for x in *; do if [[ ! -d $x && -x $x ]]; then unset "existing[$x]" lnf -v /a/bin/$x /a/exe fi done lnf -v /p/bin/* /a/exe cd /a/exe if (( ${#existing[@]} )); then echo run manually: fi for f in ${!existing[@]}; do echo rm -fv $f done # things we don't want to run in /a, because # they are long running and could get in the way of # btrfs remounting e /a/bin/distro-setup/install-my-scripts