Update 'kfg'
This commit is contained in:
145
kfg
145
kfg
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
NAME="kfg"
|
||||
VERSION="0.4"
|
||||
VERSION="0.5"
|
||||
|
||||
HOME_PATH="$HOME"
|
||||
TMP_PATH="$HOME_PATH/.tmp/kfg_install"
|
||||
@@ -25,6 +25,8 @@ TOOLS[bat]="cat replacement with syntax highlighting and git integration - https
|
||||
TOOLS[lsd]="ls replacement with colors, icons, tree-view and more - https://github.com/lsd-rs/lsd"
|
||||
TOOLS[omp]="Customisable shell prompt renderer - https://github.com/jandedobbeleer/oh-my-pos"
|
||||
TOOLS[zoxide]="A smarter cd command. - https://github.com/ajeetdsouza/zoxide"
|
||||
TOOLS[fzf]="A command-line fuzzy finder - https://github.com/junegunn/fzf"
|
||||
TOOLS[fzf-tab]="Replace zsh's default completion selection menu with fzf - https://github.com/Aloxaf/fzf-tab"
|
||||
|
||||
function show_help_name {
|
||||
echo "$NAME v$VERSION"
|
||||
@@ -130,43 +132,31 @@ function download_config {
|
||||
fi
|
||||
}
|
||||
|
||||
function install_rc {
|
||||
function install_rc_file {
|
||||
local _file=$1
|
||||
install_rc "[ -f "${_file}" ] && source "${_file}""
|
||||
}
|
||||
|
||||
function install_rc_download {
|
||||
if [ -z "$P_RC" ]; then return 0; fi
|
||||
# Make sure the directory exists
|
||||
mkdir -p "$CONFIG_PATH/$1/"
|
||||
|
||||
# This is the config file
|
||||
FILE="$CONFIG_PATH/$1/.$1.rc"
|
||||
local _file="$CONFIG_PATH/$1/.$1.rc"
|
||||
|
||||
# Does the file already exist? or does the user want to overwrite it?
|
||||
if [ ! -e "$FILE" ] || user_confirm_overwrite "$FILE"; then
|
||||
if [ ! -e "$_file" ] || user_confirm_overwrite "$_file"; then
|
||||
# Download the file and save it
|
||||
download "$2" "$FILE"
|
||||
download "$2" "$_file"
|
||||
#wget -O "$FILE" "$2" > /dev/null 2>&1
|
||||
log_add "Added $FILE"
|
||||
log_add "Added $_file"
|
||||
fi
|
||||
|
||||
# Add the file to the rc file as source $file
|
||||
SOURCE_CMD=$( echo "source $FILE" )
|
||||
RC="$HOME_PATH/$RC_FILE"
|
||||
if ! cat "$RC" | grep "$SOURCE_CMD" > /dev/null; then
|
||||
echo "$SOURCE_CMD" >> "$RC"
|
||||
log_add "Added \"$SOURCE_CMD\" to $RC"
|
||||
else
|
||||
log_info "\"$SOURCE_CMD\" already in $RC"
|
||||
fi
|
||||
|
||||
# Add the file to the rc file as source $file in root
|
||||
RC_ROOT="/root/$RC_FILE"
|
||||
if ! sudo cat "$RC_ROOT" | grep "$SOURCE_CMD" > /dev/null; then
|
||||
echo "$SOURCE_CMD" | sudo tee -a "$RC_ROOT"
|
||||
log_add "Added \"$SOURCE_CMD\" to $RC_ROOT"
|
||||
else
|
||||
log_info "\"$SOURCE_CMD\" already in $RC_ROOT"
|
||||
fi
|
||||
install_rc_file "$_file"
|
||||
}
|
||||
|
||||
function init_install_rc {
|
||||
function install_rc {
|
||||
if [ -z "$P_RC" ]; then return 0; fi
|
||||
# Add the file to the rc file as source $file
|
||||
SOURCE_CMD="$1"
|
||||
@@ -221,8 +211,8 @@ function download {
|
||||
fi
|
||||
|
||||
case "${_dld}" in
|
||||
curl) _result="$(curl $_args "${_url}")" || _result="$(sudo curl $_args "${_url}")" || err "curl: failed to download ${_url}" ;;
|
||||
wget) _result="$(wget $_args "${_url}")" || _result="$(sudo wget $_args "${_url}")" || err "wget: failed to download ${_url}" ;;
|
||||
curl) _result="$(curl $_args "${_url}")" || err "curl: failed to download ${_url}" ;;
|
||||
wget) _result="$(wget $_args "${_url}")" || err "wget: failed to download ${_url}" ;;
|
||||
*) err "unsupported downloader: ${_dld}" ;;
|
||||
esac
|
||||
|
||||
@@ -412,36 +402,29 @@ function apt_install {
|
||||
fi
|
||||
}
|
||||
|
||||
#function github_latest {
|
||||
# VERSION=$(curl -I "https://github.com/$1/releases/latest/" 2> /dev/null | grep -iE "^Location:" | tr -s ' ' | cut -d '/' -f 8 2> /dev/null)
|
||||
# echo -n ${VERSION//[$'\t\r\n']}
|
||||
#}
|
||||
|
||||
#function install_deb_github {
|
||||
# if [ -z "$P_DEB" ]; then return 0; fi
|
||||
# local PATTERN=${3/ARCH/$ARCH};
|
||||
# log_debug "Loading most recent version for $1"
|
||||
# local VERSION=$(github_latest $2 2> /dev/null )
|
||||
# VERSION=${VERSION/v/}
|
||||
# log_debug "Found version $VERSION"
|
||||
# local FILE=${PATTERN/VERSION/$VERSION}
|
||||
# local LINK="https://github.com/$2/releases/latest/download/$FILE"
|
||||
# log_debug "Download link: $LINK"
|
||||
# install_deb "$1" ${LINK//[$'\t\r\n']}
|
||||
#}
|
||||
function github_latest {
|
||||
VERSION=$(curl -I "https://github.com/$1/releases/latest/" 2> /dev/null | grep -iE "^Location:" | tr -s ' ' | cut -d '/' -f 8 2> /dev/null)
|
||||
echo -n ${VERSION//[$'\t\r\n']} 2> /dev/null
|
||||
}
|
||||
|
||||
function git_clone {
|
||||
CLONE=$(git clone "$1" "$2" 2>&1)
|
||||
if [[ $CLONE =~ "already exists" ]]; then
|
||||
log_debug "${CLONE}"
|
||||
if [[ $CLONE =~ "already exists" ]] || [[ $CLONE =~ "existiert bereits" ]]; then
|
||||
log_debug "$1 already exists. Running 'git pull'."
|
||||
PULL=$(git -C "$2" pull)
|
||||
log_info "$PULL"
|
||||
log_info "Updated $1 in $2"
|
||||
else
|
||||
log_add "Cloned $1 into $2"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_binary {
|
||||
local _app=$1
|
||||
local _path=$2
|
||||
if [ -z "$P_BINARY" ]; then return 0; fi
|
||||
#log_info "Downloading $2 to $BINARY_PATH ..."
|
||||
#sudo wget -O $BINARY_PATH/$1 $2 > /dev/null 2>&1
|
||||
log_debug $_path
|
||||
log_debug $BINARY_PATH/$_app
|
||||
sudo cp $_path $BINARY_PATH/$_app
|
||||
@@ -449,19 +432,6 @@ function install_binary {
|
||||
log_add "Installed $_app into $BINARY_PATH/$_app"
|
||||
}
|
||||
|
||||
#function install_binary_github {
|
||||
# if [ -z "$P_BINARY" ]; then return 0; fi
|
||||
# local PATTERN=${3/ARCH/$ARCH};
|
||||
# log_debug "Loading most recent version for $1"
|
||||
# VERSION=$(github_latest $2 2> /dev/null)
|
||||
# VERSION=${VERSION/v/}
|
||||
# log_debug "Found version $VERSION"
|
||||
# local FILE=${PATTERN/VERSION/$VERSION}
|
||||
# local LINK="https://github.com/$2/releases/latest/download/$FILE"
|
||||
# log_debug "Download link: $LINK"
|
||||
# install_binary "$1" ${LINK//[$'\t\r\n']}
|
||||
#}
|
||||
|
||||
function set_shell {
|
||||
if [ -z "$P_ZSH" ]; then return 0; fi
|
||||
CURR_U=$(grep "^$USER" /etc/passwd | cut -d ':' -f 7 | cut -d '/' -f 4)
|
||||
@@ -507,6 +477,7 @@ function show_help_install {
|
||||
}
|
||||
|
||||
function p_all {
|
||||
ALL=1
|
||||
p_zsh
|
||||
p_tmux
|
||||
p_unp
|
||||
@@ -514,6 +485,7 @@ function p_all {
|
||||
p_lsd
|
||||
p_omp
|
||||
p_zoxide
|
||||
p_fzf
|
||||
}
|
||||
|
||||
function p_zsh {
|
||||
@@ -539,7 +511,7 @@ function p_tmux {
|
||||
download_config tmux tmux.theme https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.tmux.theme
|
||||
download_config tmux myip.sh https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/myip.sh
|
||||
sudo chmod +x ${CONFIG_PATH}/tmux/myip.sh
|
||||
install_rc tmux https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.tmux.rc
|
||||
install_rc_download tmux https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.tmux.rc
|
||||
git_clone "https://github.com/tmux-plugins/tpm" "${CONFIG_PATH}/tmux/plugins/tpm"
|
||||
}
|
||||
|
||||
@@ -557,7 +529,7 @@ function p_bat {
|
||||
# -----------------
|
||||
github_install bat "sharkdp/bat"
|
||||
#install_deb_github bat "sharkdp/bat" "bat_VERSION_ARCH.deb"
|
||||
install_rc bat https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.bat.rc
|
||||
install_rc_download bat https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.bat.rc
|
||||
}
|
||||
|
||||
function p_lsd {
|
||||
@@ -573,7 +545,7 @@ function p_lsd {
|
||||
|
||||
function p_zoxide {
|
||||
github_install "zoxide" "ajeetdsouza/zoxide"
|
||||
install_rc "zoxide" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.zoxide.rc"
|
||||
install_rc_download zoxide https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.zoxide.rc
|
||||
}
|
||||
|
||||
function p_omp {
|
||||
@@ -582,10 +554,43 @@ function p_omp {
|
||||
# -----------------
|
||||
github_install "oh-my-posh" "JanDeDobbeleer/oh-my-posh"
|
||||
download_config "omp" "omp.json" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.omp.json"
|
||||
install_rc "omp" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.omp.rc"
|
||||
install_rc_download "omp" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.omp.rc"
|
||||
#install_binary_github "oh-my-posh" "JanDeDobbeleer/oh-my-posh" "posh-linux-ARCH"
|
||||
}
|
||||
|
||||
function p_fzf {
|
||||
# -----------------
|
||||
# Install fzf
|
||||
# -----------------
|
||||
local _repo="junegunn/fzf"
|
||||
github_install "fzf" "${_repo}"
|
||||
|
||||
# Install latest release version of fzf-tmux
|
||||
local _latest_version="$( github_latest ${_repo})"
|
||||
local _path_fzf_tmux="$TMP_PATH/fzf-tmux"
|
||||
download "https://raw.githubusercontent.com/${_repo}/${_latest_version}/bin/fzf-tmux" "${_path_fzf_tmux}"
|
||||
install_binary "fzf-tmux" "${_path_fzf_tmux}"
|
||||
|
||||
# download autocomplete
|
||||
if [ ! -z $ALL ] || user_confirm "Do you want to install fzf-tab as well?"; then
|
||||
p_fzf_tab
|
||||
fi
|
||||
|
||||
install_rc_download fzf "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/fzf.rc"
|
||||
|
||||
#download_config "fzf" "omp.json" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.omp.json"
|
||||
#install_rc "fzf" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.omp.rc"
|
||||
#install_binary_github "oh-my-posh" "JanDeDobbeleer/oh-my-posh" "posh-linux-ARCH"
|
||||
}
|
||||
|
||||
function p_fzf_tab {
|
||||
# -----------------
|
||||
# Install fzf-tab
|
||||
# -----------------
|
||||
git_clone "https://github.com/Aloxaf/fzf-tab" "${CONFIG_PATH}/fzf/tools/fzf-tab"
|
||||
install_rc_file "${CONFIG_PATH}/fzf/tools/fzf-tab/fzf-tab.plugin.zsh"
|
||||
}
|
||||
|
||||
function install {
|
||||
if [ -z $1 ]; then
|
||||
show_help_install
|
||||
@@ -599,9 +604,9 @@ function install {
|
||||
# -----------------
|
||||
# General Config
|
||||
# -----------------
|
||||
init_install_rc "export KHOME=$HOME_PATH"
|
||||
init_install_rc "export XDG_CONFIG_HOME=$CONFIG_PATH"
|
||||
install_rc "shell" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.general.rc"
|
||||
install_rc "export KHOME=$HOME_PATH"
|
||||
install_rc "export XDG_CONFIG_HOME=$CONFIG_PATH"
|
||||
install_rc_download "shell" "https://git.cbeck.tech/kamu/dotfiles/raw/branch/main/.general.rc"
|
||||
|
||||
while :
|
||||
do
|
||||
@@ -616,6 +621,7 @@ function install {
|
||||
lsd) p_lsd; shift ;;
|
||||
omp) p_omp; shift ;;
|
||||
zoxide) p_zoxide; shift ;;
|
||||
fzf) p_fzf; shift ;;
|
||||
# If invalid options were passed, then getopt should have reported an error,
|
||||
# which we checked as VALID_ARGUMENTS when getopt was called...
|
||||
*) log_error "Unrecognised program: $1"; shift ;;
|
||||
@@ -678,7 +684,7 @@ function get_architecture {
|
||||
_cputype="$(uname -m)"
|
||||
_clibtype="gnu"
|
||||
|
||||
APP_FILTER="arm64|amd64|aarch64|i686|x86_64|x86-64|x64|musl|gnu|windows|darwin|linux|android|exe|sig|sha256"
|
||||
APP_FILTER="arm64|freebsd|openbsd|amd64|aarch64|i686|x86_64|x86-64|x64|musl|gnu|windows|darwin|linux|android|exe|sig|sha256"
|
||||
|
||||
if [ "${_ostype}" = Linux ]; then
|
||||
if [ "$(uname -o || true)" = Android ]; then
|
||||
@@ -731,6 +737,11 @@ function get_architecture {
|
||||
;;
|
||||
FreeBSD)
|
||||
_ostype=unknown-freebsd
|
||||
APP_FILTER=$(echo $APP_FILTER | sed -e "s/freebsd|//gi")
|
||||
;;
|
||||
OpenBSD)
|
||||
_ostype=unknown-freebsd
|
||||
APP_FILTER=$(echo $APP_FILTER | sed -e "s/openbsd|//gi")
|
||||
;;
|
||||
NetBSD)
|
||||
_ostype=unknown-netbsd
|
||||
|
||||
Reference in New Issue
Block a user