mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-15 07:53:39 +00:00
fix: resolve critical issues in x-clean-vendordirs, x-foreach, x-ip
x-clean-vendordirs: remove broken msgr dependency (not sourced), add set -euo pipefail. x-foreach: replace eval on command args with direct "$@" execution, add usage guard. x-ip: add set -euo pipefail, curl dependency check, and silent-fail flag.
This commit is contained in:
@@ -7,13 +7,15 @@
|
|||||||
# Author: Ismo Vuorinen 2025
|
# Author: Ismo Vuorinen 2025
|
||||||
# License: MIT
|
# License: MIT
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
# Check if the user has provided a directory as an argument
|
# Check if the user has provided a directory as an argument
|
||||||
if [ "$1" ]; then
|
if [ "${1:-}" ]; then
|
||||||
# Check if the directory exists
|
# Check if the directory exists
|
||||||
if [ -d "$1" ]; then
|
if [ -d "$1" ]; then
|
||||||
CLEANDIR="$1"
|
CLEANDIR="$1"
|
||||||
else
|
else
|
||||||
msgr err "Directory $1 does not exist."
|
echo "Error: Directory $1 does not exist." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -27,7 +29,7 @@ remove_node_modules_vendor()
|
|||||||
|
|
||||||
# If the directory is a symlink, skip it
|
# If the directory is a symlink, skip it
|
||||||
if [ -L "$dir" ]; then
|
if [ -L "$dir" ]; then
|
||||||
msgr msg "Skipping symlink $dir"
|
echo "Skipping symlink $dir"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -35,18 +37,18 @@ remove_node_modules_vendor()
|
|||||||
if [ -d "$dir" ]; then
|
if [ -d "$dir" ]; then
|
||||||
# If node_modules or vendor folder exists, remove it and all its contents
|
# If node_modules or vendor folder exists, remove it and all its contents
|
||||||
if [ -d "$dir/node_modules" ]; then
|
if [ -d "$dir/node_modules" ]; then
|
||||||
msgr run "Removing $dir/node_modules"
|
echo "Removing $dir/node_modules"
|
||||||
rm -rf "$dir/node_modules"
|
rm -rf "$dir/node_modules"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "$dir/vendor" ]; then
|
if [ -d "$dir/vendor" ]; then
|
||||||
msgr run "Removing $dir/vendor"
|
echo "Removing $dir/vendor"
|
||||||
rm -rf "$dir/vendor"
|
rm -rf "$dir/vendor"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Recursively check subdirectories
|
# Recursively check subdirectories
|
||||||
for item in "$dir"/*; do
|
for item in "$dir"/*; do
|
||||||
remove_node_modules_vendor "$item"
|
[ -d "$item" ] && remove_node_modules_vendor "$item"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,26 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# foreach <folder> <commands that should be run to each file>
|
# Run a command in each directory matching a pattern.
|
||||||
# foreach "ls -d */" "git status" # run git status in each folder
|
#
|
||||||
|
# Usage: x-foreach <listing-command> <command> [args...]
|
||||||
|
# x-foreach "ls -d */" "git status"
|
||||||
#
|
#
|
||||||
# Source: https://github.com/mvdan/dotfiles/blob/master/.bin/foreach
|
# Source: https://github.com/mvdan/dotfiles/blob/master/.bin/foreach
|
||||||
|
|
||||||
cmd=$1
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [ $# -lt 2 ]; then
|
||||||
|
echo "Usage: $0 <listing-command> <command> [args...]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
listing=$1
|
||||||
shift
|
shift
|
||||||
|
|
||||||
for dir in $($cmd); do
|
for dir in $(eval "$listing"); do
|
||||||
(
|
(
|
||||||
echo "$dir"
|
echo "$dir"
|
||||||
cd "$dir" || exit 1
|
cd "$dir" || exit 1
|
||||||
# shellcheck disable=SC2294,SC2034
|
"$@"
|
||||||
eval "$@" # allow multiple commands like "foo && bar"
|
|
||||||
)
|
)
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Display external IP address.
|
||||||
|
#
|
||||||
# Source: https://github.com/thirtythreeforty/dotfiles/blob/master/bin/extip
|
# Source: https://github.com/thirtythreeforty/dotfiles/blob/master/bin/extip
|
||||||
|
|
||||||
curl icanhazip.com "${@}"
|
set -euo pipefail
|
||||||
|
|
||||||
|
if ! command -v curl &> /dev/null; then
|
||||||
|
echo "Error: curl is required" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -sf icanhazip.com
|
||||||
|
|||||||
Reference in New Issue
Block a user