2024-08-10 21:07:15 -04:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# shellcheck shell=bash
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
##@Version : 202408102055-git
|
|
|
|
# @@Author : Jason Hempstead
|
|
|
|
# @@Contact : jason@casjaysdev.pro
|
|
|
|
# @@License : LICENSE.md
|
|
|
|
# @@ReadME : symlink --help
|
|
|
|
# @@Copyright : Copyright: (c) 2024 Jason Hempstead, Casjays Developments
|
|
|
|
# @@Created : Saturday, Aug 10, 2024 20:55 EDT
|
|
|
|
# @@File : symlink
|
|
|
|
# @@Description :
|
|
|
|
# @@Changelog : New script
|
|
|
|
# @@TODO : Better documentation
|
|
|
|
# @@Other :
|
|
|
|
# @@Resource :
|
|
|
|
# @@Terminal App : no
|
|
|
|
# @@sudo/root : no
|
|
|
|
# @@Template : shell/bash
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# shellcheck disable=SC2016
|
|
|
|
# shellcheck disable=SC2031
|
|
|
|
# shellcheck disable=SC2120
|
|
|
|
# shellcheck disable=SC2155
|
|
|
|
# shellcheck disable=SC2199
|
|
|
|
# shellcheck disable=SC2317
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# script variables
|
|
|
|
APPNAME="$(basename "$0" 2>/dev/null)"
|
|
|
|
VERSION="202408102055-git"
|
|
|
|
RUN_USER="$USER"
|
|
|
|
SET_UID="$(id -u)"
|
|
|
|
SCRIPT_SRC_DIR="${BASH_SOURCE%/*}"
|
|
|
|
SYMLINK_CWD="$(realpath "$PWD")"
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# script functions
|
|
|
|
if [ "$SHOW_RAW" != "true" ]; then
|
2024-09-02 14:31:20 -04:00
|
|
|
__printf_color() { printf "%b" "$(tput setaf "${2:-$DEFAULT_COLOR}" 2>/dev/null)" "$1\n" "$(tput sgr0 2>/dev/null)"; }
|
2024-08-10 21:07:15 -04:00
|
|
|
else
|
|
|
|
# Disable colorization
|
2024-09-02 14:31:20 -04:00
|
|
|
__printf_color() { printf '%b\n' "$1" | tr -d '\t' | sed '/^%b$/d;s,\x1B\[ 0-9;]*[a-zA-Z],,g'; }
|
2024-08-10 21:07:15 -04:00
|
|
|
fi
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# check for command
|
|
|
|
__cmd_exists() { which $1 >/dev/null 2>&1 || return 1; }
|
|
|
|
__function_exists() { builtin type $1 >/dev/null 2>&1 || return 1; }
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# custom functions
|
|
|
|
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# Define Variables
|
2024-09-02 14:31:20 -04:00
|
|
|
DEFAULT_COLOR="7"
|
2024-08-10 21:07:15 -04:00
|
|
|
SYMLINK_EXIT_STATUS=0
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# Main application
|
2024-08-27 14:03:14 -04:00
|
|
|
{ [ $# -eq 2 ] || [ "$1" = "--help" ]; } || { __printf_color "Usage: $APPNAME fromFile toFile" && exit 1; }
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
2024-09-04 08:53:20 -04:00
|
|
|
is_link="$(ls -la "$2" 2>/dev/null | awk '{print $NF}')"
|
|
|
|
if [ "$1" != "$is_link" ]; then
|
2024-09-02 14:31:20 -04:00
|
|
|
if [ -L "$2" ]; then
|
|
|
|
unlink "$2"
|
|
|
|
elif [ -e "$2" ]; then
|
|
|
|
rm -Rf "$2"
|
|
|
|
fi
|
|
|
|
if [ -e "$1" ]; then
|
|
|
|
ln -sf "$1" "$2"
|
|
|
|
SYMLINK_EXIT_STATUS=$?
|
|
|
|
fi
|
2024-08-10 21:07:15 -04:00
|
|
|
fi
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# End application
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# lets exit with code
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
exit $SYMLINK_EXIT_STATUS
|
|
|
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
# ex: ts=2 sw=2 et filetype=sh
|