diff --git a/bin/linky b/bin/linky new file mode 100755 index 0000000..e6a07eb --- /dev/null +++ b/bin/linky @@ -0,0 +1,48 @@ +#!/usr/bin/env nuxsh + +nux.use nux/fs + +## Symlink management tool +## + +## relativize:: +## Converts absolute symlinks to relative ones +## +@command relativize { + for p in "$@"; do + if nux.check.file.symlink "$p"; then + target=$(nux.fs.symlink.target "$p"); + + if nux.fs.check.absolute "$target"; then + link_dir=$(nux.fs.dirname "$p") + link_name=$(nux.fs.name "$p") + nux.fs.info "$p" Relativizing symlink + nux.fs.symlink "$target" "$link_dir" "$link_name" + fi + fi + done +} + +## remove-source:: +## Removes the source of a symlink and any symbolic links that were encountered +## during dereferencing. +## +@command remove-source { + for p in "$@"; do + if nux.check.file.symlink "$p"; then + target="$(realpath "$p")" + next="$p" + while [ -L "$next" ]; do + current="$next" + next=$(nux.fs.symlink.target "$current") + nux.fs.info "$current" Deleting symlink + rm "$current" + done + if [ -e "$target" ]; then + nux.fs.info "$target" Deleting source + rm "$target" + fi + + fi + done +} diff --git a/bin/uuidify b/bin/uuidify new file mode 100755 index 0000000..72e17c1 --- /dev/null +++ b/bin/uuidify @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +for file in "$@"; do + name="${file##*/}"; + if [[ ! "$name" =~ \.[0-9a-fA-F]{32}\. ]]; then + prefix="${file%.*}"; + suffix="${file##*.}"; + uuid=$(cat /proc/sys/kernel/random/uuid | tr -d "-"); + echo "$file" uuidifying + mv -v "$file" "${prefix}.${uuid}.${suffix}"; + fi +done