aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2022-04-02 14:28:37 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2022-04-02 14:28:37 +0300
commit65bfbc1fb54850275d4e9842ef2bd333d2081af4 (patch)
treecd38ddc1ad1abf3d930bd769a7154a13da161b02 /src
parenttest: add a test case (diff)
downloadconfig-links-65bfbc1fb54850275d4e9842ef2bd333d2081af4.tar.gz
config-links-65bfbc1fb54850275d4e9842ef2bd333d2081af4.zip
bash best practices & linting
Diffstat (limited to '')
-rw-r--r--src/db.sh19
-rw-r--r--src/path.sh4
2 files changed, 15 insertions, 8 deletions
diff --git a/src/db.sh b/src/db.sh
index b057202..201ad25 100644
--- a/src/db.sh
+++ b/src/db.sh
@@ -57,7 +57,7 @@ add_entry() {
local shared_var_dir="$shared_root_dir%$var_name%"
local symlink_var_dir
symlink_var_dir="$( resolve_variable "$var_name" )"
- local subpath="${entry#%$var_name%/}"
+ local subpath="${entry#%"$var_name"%/}"
local shared_path="$shared_var_dir"
[ "$shared_var_dir" != / ] && shared_path="$shared_path/"
@@ -134,7 +134,7 @@ delete_obsolete_dirs() {
[ "$base_dir" = "$dir" ] && return 0
- local subpath="${dir##$base_dir/}"
+ local subpath="${dir##"$base_dir"/}"
if [ "$subpath" = "$dir" ]; then
dump "base directory: $base_dir" >&2
@@ -193,10 +193,18 @@ shared_file_present() {
link_all_entries() {
local shared_var_dir
+
+ find "$shared_root_dir" \
+ -mindepth 1 -maxdepth 1 \
+ -\( -type d -o -type l -\) \
+ -regextype posix-basic \
+ -regex ".*/$var_name_regex\$" \
+ -printf '%P\0' |
while IFS= read -d '' -r shared_var_dir; do
dump "shared directory: $shared_root_dir$shared_var_dir"
-
local shared_path
+
+ find "$shared_root_dir$shared_var_dir/" -\( -type f -o -type l -\) -print0 |
while IFS= read -d '' -r shared_path; do
dump " shared file path: $shared_path"
local entry="${shared_path:${#shared_root_dir}}"
@@ -214,9 +222,8 @@ link_all_entries() {
dump ' ... adding a symlink'
is_dry_run || link_entry "$entry"
fi
-
- done < <( find "$shared_root_dir$shared_var_dir/" -\( -type f -o -type l -\) -print0 )
- done < <( find "$shared_root_dir" -regextype posix-basic -mindepth 1 -maxdepth 1 -\( -type d -o -type l -\) -regex ".*/$var_name_regex\$" -printf '%P\0' )
+ done
+ done
}
unlink_all_entries() {
diff --git a/src/path.sh b/src/path.sh
index bf52a6f..8ac71a9 100644
--- a/src/path.sh
+++ b/src/path.sh
@@ -76,7 +76,7 @@ traverse_path() {
local -a abs_paths=()
local path
- while IFS= read -d '' -r path; do
+ readlink -z --canonicalize-missing -- ${paths[@]+"${paths[@]}"} | while IFS= read -d '' -r path; do
if [ -n "$must_exist" ] && [ ! -e "$path" ]; then
dump "must exist: $path" >&2
return 1
@@ -88,7 +88,7 @@ traverse_path() {
fi
abs_paths+=("$path")
- done < <( readlink -z --canonicalize-missing -- ${paths[@]+"${paths[@]}"} )
+ done
printf -- "$fmt" ${abs_paths[@]+"${abs_paths[@]}"}
}