mirror of
				https://github.com/dockersrc/alpine
				synced 2025-11-04 07:02:11 -05:00 
			
		
		
		
	
		
			
	
	
		
			78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/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
							 | 
						||
| 
								 | 
							
								  __printf_color() { printf "%b" "$(tput setaf "${2:-$DEFAULT_COLOR}" 2>/dev/null)" "$1\n" "$(tput sgr0 2>/dev/null)"; }
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								  # Disable colorization
							 | 
						||
| 
								 | 
							
								  __printf_color() { printf '%b\n' "$1" | tr -d '\t' | sed '/^%b$/d;s,\x1B\[ 0-9;]*[a-zA-Z],,g'; }
							 | 
						||
| 
								 | 
							
								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
							 | 
						||
| 
								 | 
							
								DEFAULT_COLOR="7"
							 | 
						||
| 
								 | 
							
								SYMLINK_EXIT_STATUS=0
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								# Main application
							 | 
						||
| 
								 | 
							
								{ [ $# -eq 2 ] || [ "$1" = "--help" ]; } || { __printf_color "Usage: $APPNAME fromFile toFile" && exit 1; }
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								is_link="$(ls -la "$2" 2>/dev/null | awk '{print $NF}')"
							 | 
						||
| 
								 | 
							
								if [ "$1" != "$is_link" ]; then
							 | 
						||
| 
								 | 
							
								  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
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								# End application
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								# lets exit with code
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								exit $SYMLINK_EXIT_STATUS
							 | 
						||
| 
								 | 
							
								# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
							 | 
						||
| 
								 | 
							
								# ex: ts=2 sw=2 et filetype=sh
							 |