mirror of
				https://github.com/gaschz/dotfiles.git
				synced 2025-10-31 19:48:57 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| ## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
 | |
| ##
 | |
| ## SPDX-License-Identifier: AGPL-3.0-or-later
 | |
| 
 | |
| set -eu
 | |
| 
 | |
| prg="$0"
 | |
| if ! test -e "${prg}"; then
 | |
|   case "${prg}" in
 | |
|     (*/*) exit 1;;
 | |
|     (*) prg=$(command -v -- "${prg}") || exit;;
 | |
|   esac
 | |
| fi
 | |
| dir="$(cd -P -- "$(dirname -- "${prg}")" && pwd -P)" || exit 1
 | |
| prg="${dir}/$(basename -- "${prg}")" || exit 1
 | |
| cd -- "${dir}" || exit 1
 | |
| 
 | |
| usage(){
 | |
|   printf '%s\n' "Usage: ${0##*/} [-h|--help] DIR [DIR2...]"
 | |
|   printf '%s\n' "Example: ${0##*/}             # deploy all"
 | |
|   printf '%s\n' "Example: ${0##*/} sh vim ...  # deploy specific dirs"
 | |
| }
 | |
| 
 | |
| case "${1-}" in
 | |
|   -h|--help) usage; exit 1;;
 | |
|   ""|--all) args="$(find . -maxdepth 1 -type d)";;
 | |
|   *) args="${*}";;
 | |
| esac
 | |
| 
 | |
| for dir in ${args}; do
 | |
|   case "${dir##*/}" in
 | |
|     "."|"..") continue;;
 | |
|     *) ;;
 | |
|   esac
 | |
|   dir="${dir%*/}"
 | |
|   test -f "${dir}" && continue
 | |
|   if ! test -d "${dir}"; then
 | |
|     printf '%s\n' "Directory doesn't exist: '${dir}'." >&2
 | |
|     exit 1
 | |
|   fi
 | |
|   for file in "${dir}"/.*; do
 | |
|     test -e "${file}" || continue
 | |
|     case "${file##*/}" in
 | |
|       "."|"..") continue;;
 | |
|       *) ;;
 | |
|     esac
 | |
|     cp -rv -- "${file}" "${HOME}"
 | |
|   done
 | |
| done
 | 
