Create target directory if required

Remove hardcoded target directory
This commit is contained in:
Pratik Tripathy
2021-07-06 20:42:18 +05:30
parent 2a4d72f10f
commit 926831ad2b

View File

@@ -1,6 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
usage() { usage() {
if [ -n "$1" ]; then if [ -n "$1" ]; then
echo "" echo ""
@@ -27,15 +26,15 @@ CREATE_LINKS="n"
while [[ "${#}" -gt 0 ]]; do while [[ "${#}" -gt 0 ]]; do
case $1 in case $1 in
-q|--quiet) -q | --quiet)
QUIET="y" QUIET="y"
shift shift
;; ;;
-l|--create-links) -l | --create-links)
CREATE_LINKS="y" CREATE_LINKS="y"
shift shift
;; ;;
-h|--help) -h | --help)
echo echo
usage usage
echo echo
@@ -48,27 +47,29 @@ while [[ "${#}" -gt 0 ]]; do
esac esac
done done
main () { main() {
TS=$(date '+%d_%m_%Y-%H_%M_%S') TS=$(date '+%d_%m_%Y-%H_%M_%S')
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE")" > /dev/null 2>&1 && pwd)"
find . -type f ! -name "$0" ! -path '*/.idea/*' ! -path '*/.git/*' ! -name 'LICENSE' ! -name 'README.md' -print0 | while IFS= read -r -d '' file find . -type f ! -name "$0" ! -path '*/.idea/*' ! -path '*/.git/*' ! -name 'LICENSE' ! -name 'README.md' -print0 | while IFS= read -r -d '' file; do
do
# Replaces `.` with `~` in the found file names # Replaces `.` with `~` in the found file names
# target_file="${file/./~}" target_file="${file/./~}"
target_file="${file/.//media/pratik/Projects/Code/dotfiles-test}"
if [[ -f "${target_file}" ]] if [[ -f "${target_file}" ]]; then
then
mv "$target_file" "${target_file}_${TS}" && [[ "$QUIET" == "n" ]] && echo "Existing setting renamed to ${target_file}_${TS}" mv "$target_file" "${target_file}_${TS}" && [[ "$QUIET" == "n" ]] && echo "Existing setting renamed to ${target_file}_${TS}"
fi fi
target_directory=$(dirname "${target_file}")
if [[ ! -d "${target_directory}" ]]; then
mkdir -p "${target_directory}" && [[ "$QUIET" == "n" ]] && echo "Directory ${target_directory} created"
fi
if [[ "$CREATE_LINKS" == "y" ]]; then if [[ "$CREATE_LINKS" == "y" ]]; then
ln -s "${file/./${SCRIPT_DIR}}" "${target_file}" && [[ "$QUIET" == "n" ]] && echo "Linked ${target_file}" ln -s "${file/./${SCRIPT_DIR}}" "${target_file}" && [[ "$QUIET" == "n" ]] && echo "Linked ${target_file}"
else else
cp "${file/./${SCRIPT_DIR}}" "${target_file}" && [[ "$QUIET" == "n" ]] && echo "Copied ${target_file}" cp "${file/./${SCRIPT_DIR}}" "${target_file}" && [[ "$QUIET" == "n" ]] && echo "Copied ${target_file}"
fi fi
done; done
} }
main "$@" main "$@"