You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.8 KiB
106 lines
2.8 KiB
#!/bin/sh
|
|
|
|
files_debug_off() {
|
|
unset FILES_DEBUG;
|
|
}
|
|
|
|
files_debug_on() {
|
|
export FILES_DEBUG=true;
|
|
}
|
|
|
|
# debug logging
|
|
files_debug_log() {
|
|
if ! [[ -z "${FILES_DEBUG}" ]]; then
|
|
echo -e "# [INFO] $@";
|
|
fi
|
|
}
|
|
|
|
# symbolic links all files in a directory into the target
|
|
files_linkdir() {
|
|
local SOURCE=$1;
|
|
local DEST=$2;
|
|
local FORCE=$3;
|
|
|
|
if [[ -d "${SOURCE}" ]]; then
|
|
if ! [[ -z "${FORCE}" ]] || ! [[ -d "${DEST}" ]]; then
|
|
files_debug_log "LINKING $SOURCE -> $DEST"
|
|
mkdir -p ${DEST};
|
|
find "${SOURCE}" -type d | sed "s=${SOURCE}==" | xargs -I {} mkdir -p ${DEST}{};
|
|
find "${SOURCE}" -type f | sed "s=${SOURCE}==" | xargs -I {} ln -fs ${SOURCE}{} ${DEST}{};
|
|
fi
|
|
fi
|
|
|
|
# ln on windows pretty much only works with hardlinks it seems
|
|
#ls -lA "${SOURCE}" | grep "^-" | awk '{print $9}' | xargs -I {} ln -vfs "${SOURCE}/{}" "${DEST}/{}"
|
|
}
|
|
|
|
files_plugins_list() {
|
|
for plugin in ${FILES_PLUGINS[@]}; do
|
|
export FILES_PLUGIN_ROOT="${FILES_ROOT}/plugins/${plugin}";
|
|
echo "\"${plugin}\" @ ${FILES_PLUGIN_ROOT}";
|
|
unset FILES_PLUGIN_ROOT;
|
|
done
|
|
}
|
|
|
|
files_install() {
|
|
local target=${1};
|
|
local FILES_SOURCEME=$(cat ${FILES_ROOT}/install_script.sh);
|
|
|
|
if [[ -f "${target}" ]]; then
|
|
if [[ -z "$(cat ${target} | grep 'sourceme.sh')" ]]; then
|
|
files_debug_log "[files_install] installing myself to $target";
|
|
echo "${FILES_SOURCEME}" >> ${target};
|
|
fi
|
|
fi
|
|
}
|
|
|
|
load_env() {
|
|
files_debug_log "[load_env] DEBUG MODE IS ENABLED. Turn if off via:\nunset FILES_DEBUG\n";
|
|
if [[ -d "${1}" ]]; then
|
|
export HOME=${1};
|
|
fi
|
|
|
|
if [[ -z "${FILES_ROOT}" ]]; then
|
|
export FILES_ROOT="${HOME}/.files";
|
|
fi
|
|
|
|
files_debug_log "[load_env] \$FILES_ROOT = ${FILES_ROOT}";
|
|
export FILES_USER_CONFIG="${HOME}/.config";
|
|
|
|
export FILES_CACHE_DIR="${FILES_ROOT}/.tmp/";
|
|
|
|
if [[ -d "${FILES_CACHE_DIR}" ]]; then
|
|
files_debug_log "[load env] Setting up cache directory @ ${FILES_CACHE_DIR}";
|
|
mkdir -p ${FILES_CACHE_DIR};
|
|
fi
|
|
|
|
if [[ -z "${FILES_PLUGINS}" ]]; then
|
|
export FILES_PLUGINS=("brew" "ssh" "vim" "git-extras" "asdf" "helm" "starship" "extras");
|
|
fi
|
|
files_debug_log "[load_env] using plugins FILES_PLUGINS=${FILES_PLUGINS}";
|
|
|
|
files_debug_log "[load_env] \$HOME='$HOME'";
|
|
# load plugns
|
|
for plugin in ${FILES_PLUGINS[@]}; do
|
|
set +b;
|
|
export FILES_PLUGIN_ROOT="${FILES_ROOT}/plugins/${plugin}";
|
|
if [[ -f "${FILES_PLUGIN_ROOT}/${plugin}.sh" ]]; then
|
|
files_debug_log "[PLUGIN] LOADING ${plugin} @ ${FILES_PLUGIN_ROOT}";
|
|
source "${FILES_PLUGIN_ROOT}/${plugin}.sh";
|
|
fi
|
|
unset FILES_PLUGIN_ROOT;
|
|
set -b;
|
|
done
|
|
|
|
files_debug_log "[load_env] setting up ${FILES_USER_CONFIG} directory";
|
|
files_linkdir "${FILES_ROOT}/.config" ${FILES_USER_CONFIG};
|
|
|
|
[[ -f "${HOME}/.bashrc" ]] && files_install "${HOME}/.bashrc";
|
|
[[ -f "${HOME}/.bash_profile" ]] && files_install "${HOME}/.bash_profile";
|
|
[[ -f "${HOME}/.profile" ]] && files_install "${HOME}/.profile";
|
|
|
|
return 0;
|
|
}
|
|
|
|
load_env || true;
|