mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-03-05 17:56:33 +00:00
fix(shell): rework shell config for more stability
This commit is contained in:
13
base/bashrc
13
base/bashrc
@@ -3,11 +3,20 @@
|
|||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
|
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$PATH"
|
||||||
# shellcheck source=scripts/shared.sh
|
# shellcheck source=scripts/shared.sh
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
path_prepend "$DOTFILES/local/bin"
|
|
||||||
|
|
||||||
$DOTFILES/local/bin/x-load-configs
|
# Explicitly set XDG folders
|
||||||
|
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
|
||||||
|
# custom variables
|
||||||
|
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
# Import ssh keys in keychain
|
# Import ssh keys in keychain
|
||||||
ssh-add -A 2>/dev/null
|
ssh-add -A 2>/dev/null
|
||||||
|
|||||||
36
base/zshrc
36
base/zshrc
@@ -5,11 +5,37 @@
|
|||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
# shellcheck source=scripts/shared.sh
|
# shellcheck source=scripts/shared.sh
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
path_prepend "$DOTFILES/local/bin"
|
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$PATH"
|
||||||
|
|
||||||
|
# Explicitly set XDG folders
|
||||||
|
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
|
||||||
|
# custom variables
|
||||||
|
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
export COMPLETION_WAITING_DOTS=true
|
export COMPLETION_WAITING_DOTS=true
|
||||||
|
|
||||||
$DOTFILES/local/bin/x-load-configs
|
path_append "/opt/homebrew/bin"
|
||||||
|
if type brew &> /dev/null; then
|
||||||
|
eval "$(brew shellenv)"
|
||||||
|
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
path_append "/usr/local/bin"
|
||||||
|
path_prepend "$XDG_DATA_HOME/cargo/bin"
|
||||||
|
path_prepend "$XDG_BIN_HOME"
|
||||||
|
path_prepend "$HOME/.local/go/bin"
|
||||||
|
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||||
|
|
||||||
|
source "$DOTFILES/config/exports-shell"
|
||||||
|
source "$DOTFILES/config/exports-apps"
|
||||||
|
source "$DOTFILES/config/alias"
|
||||||
|
source "$DOTFILES/config/functions"
|
||||||
|
|
||||||
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||||
@@ -17,10 +43,6 @@ x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
|||||||
# Add completion scripts to zsh path
|
# Add completion scripts to zsh path
|
||||||
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||||
|
|
||||||
if type brew &> /dev/null; then
|
|
||||||
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Try to load antigen, if present
|
# Try to load antigen, if present
|
||||||
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
|
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
|
||||||
# shellcheck source=../../.local/bin/antigen.zsh
|
# shellcheck source=../../.local/bin/antigen.zsh
|
||||||
@@ -29,7 +51,7 @@ ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
|
|||||||
# antigen is present
|
# antigen is present
|
||||||
antigen use oh-my-zsh
|
antigen use oh-my-zsh
|
||||||
|
|
||||||
export ZSH_TMUX_AUTOSTART=false
|
export ZSH_TMUX_AUTOSTART=true
|
||||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||||
export ZSH_TMUX_UNICODE=true
|
export ZSH_TMUX_UNICODE=true
|
||||||
export ZSH_TMUX_AUTOQUIT=false
|
export ZSH_TMUX_AUTOQUIT=false
|
||||||
|
|||||||
71
config/alias
71
config/alias
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck source="../scripts/shared.sh"
|
# shellcheck source="../scripts/shared.sh"
|
||||||
# shellcheck disable=1091,2139
|
# shellcheck disable=1091,2139
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
DOTFILES="$HOME/.dotfiles"
|
||||||
|
|
||||||
# Get installed php versions from brew and setup aliases
|
# Get installed php versions from brew and setup aliases
|
||||||
function x-set-php-aliases
|
function x-set-php-aliases
|
||||||
@@ -106,9 +106,6 @@ alias updatedb="sudo /usr/libexec/locate.updatedb"
|
|||||||
# Always return full history
|
# Always return full history
|
||||||
alias history="history 1"
|
alias history="history 1"
|
||||||
|
|
||||||
alias pip="pip3 "
|
|
||||||
alias python="python3 "
|
|
||||||
|
|
||||||
# tmux: automatically attach or create session with name 'main'
|
# tmux: automatically attach or create session with name 'main'
|
||||||
alias tmux='tmux new-session -A -s main'
|
alias tmux='tmux new-session -A -s main'
|
||||||
# tmux: attach or create new session
|
# tmux: attach or create new session
|
||||||
@@ -149,3 +146,69 @@ fi
|
|||||||
|
|
||||||
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
|
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
|
||||||
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
||||||
|
|
||||||
|
# Alacritty preexec hook to update dynamic title
|
||||||
|
preexec()
|
||||||
|
{
|
||||||
|
print -Pn "\e]0;$1%~\a"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update dotfiles
|
||||||
|
dfu()
|
||||||
|
{
|
||||||
|
(
|
||||||
|
cd "$DOTFILES" && git pull --ff-only && ./install -q
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Weather in Tampere, or other city
|
||||||
|
weather()
|
||||||
|
{
|
||||||
|
# https://github.com/chubin/wttr.in#usage
|
||||||
|
local city="${1:-Tampere}"
|
||||||
|
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
ssh-docker()
|
||||||
|
{
|
||||||
|
docker exec -it "$@" bash
|
||||||
|
}
|
||||||
|
|
||||||
|
# All the dig info
|
||||||
|
digga()
|
||||||
|
{
|
||||||
|
dig +nocmd "$1" any +multiline +noall +answer
|
||||||
|
}
|
||||||
|
|
||||||
|
# Rector project to php version 8.2 by default.
|
||||||
|
rector()
|
||||||
|
{
|
||||||
|
local php="${1:-82}"
|
||||||
|
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||||
|
"/project/$1" \
|
||||||
|
--set "php${php}" \
|
||||||
|
--autoload-file /project/vendor/autoload.php
|
||||||
|
}
|
||||||
|
|
||||||
|
# Commit everything
|
||||||
|
commit()
|
||||||
|
{
|
||||||
|
commitMessage="$*"
|
||||||
|
|
||||||
|
if [ "$commitMessage" = "" ]; then
|
||||||
|
commitMessage="Automated commit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git add .
|
||||||
|
eval "git commit -a -m '${commitMessage}'"
|
||||||
|
}
|
||||||
|
|
||||||
|
scheduler()
|
||||||
|
{
|
||||||
|
while :; do
|
||||||
|
php artisan schedule:run
|
||||||
|
echo "Sleeping 60 seconds..."
|
||||||
|
sleep 60
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Setting aliases for tunkki
|
|
||||||
|
|
||||||
alias nvim="/snap/nvim/current/usr/bin/nvim"
|
|
||||||
@@ -3,8 +3,6 @@
|
|||||||
# vim: filetype=zsh
|
# vim: filetype=zsh
|
||||||
|
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
|
||||||
path_prepend "$DOTFILES/local/bin"
|
|
||||||
|
|
||||||
# Explicitly set XDG folders
|
# Explicitly set XDG folders
|
||||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
@@ -17,12 +15,6 @@ export XDG_BIN_HOME="$HOME/.local/bin"
|
|||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
path_append "/opt/homebrew/bin"
|
|
||||||
have brew && eval "$(brew shellenv)"
|
|
||||||
|
|
||||||
path_append "/usr/local/bin"
|
|
||||||
path_prepend "$XDG_BIN_HOME"
|
|
||||||
|
|
||||||
source "$DOTFILES/config/exports-shell"
|
source "$DOTFILES/config/exports-shell"
|
||||||
source "$DOTFILES/config/exports-apps"
|
source "$DOTFILES/config/exports-apps"
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,6 @@
|
|||||||
# shellcheck disable=1091,2139
|
# shellcheck disable=1091,2139
|
||||||
# vim: filetype=bash
|
# vim: filetype=bash
|
||||||
|
|
||||||
: "${DOTFILES:=$HOME/.dotfiles}"
|
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
|
||||||
|
|
||||||
# Antigen configuration
|
# Antigen configuration
|
||||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||||
@@ -24,10 +21,8 @@ x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
|||||||
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
||||||
|
|
||||||
# bob manages nvim versions
|
# bob manages nvim versions
|
||||||
have bob && {
|
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||||
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
have nvim && export EDITOR="nvim"
|
||||||
have nvim && export EDITOR="nvim"
|
|
||||||
}
|
|
||||||
|
|
||||||
export HOMEBREW_NO_ENV_HINTS=true
|
export HOMEBREW_NO_ENV_HINTS=true
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
## LUA
|
## LUA
|
||||||
have luarocks && $(luarocks path --bin)
|
have luarocks && $(luarocks path --bin)
|
||||||
|
|
||||||
path_append "$HOME/.local/go/bin"
|
path_prepend "$HOME/.local/go/bin"
|
||||||
|
|
||||||
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
|
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
|
||||||
alias nano='nano -wS -$'
|
alias nano='nano -wS -$'
|
||||||
|
|||||||
@@ -4,7 +4,17 @@
|
|||||||
# vim: filetype=bash
|
# vim: filetype=bash
|
||||||
|
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
|
||||||
|
# Explicitly set XDG folders
|
||||||
|
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
|
||||||
|
# custom variables
|
||||||
|
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
export LC_ALL=fi_FI.UTF-8
|
export LC_ALL=fi_FI.UTF-8
|
||||||
|
|
||||||
@@ -60,10 +70,6 @@ if [ "$DOTFILES_CURRENT_SHELL" = "-zsh" ]; then
|
|||||||
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache"
|
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache"
|
||||||
zstyle ':completion:*' list-colors "$LS_COLORS"
|
zstyle ':completion:*' list-colors "$LS_COLORS"
|
||||||
|
|
||||||
# fzf
|
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh ] \
|
|
||||||
&& source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh
|
|
||||||
|
|
||||||
# Load iterm2 shell integration
|
# Load iterm2 shell integration
|
||||||
# https://iterm2.com/documentation-shell-integration.html
|
# https://iterm2.com/documentation-shell-integration.html
|
||||||
[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \
|
[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \
|
||||||
|
|||||||
@@ -1,73 +1,3 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# shell functions
|
# shell functions
|
||||||
#
|
|
||||||
# shellcheck source="../scripts/shared.sh"
|
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
|
||||||
|
|
||||||
# Alacritty preexec hook to update dynamic title
|
|
||||||
preexec()
|
|
||||||
{
|
|
||||||
print -Pn "\e]0;$1%~\a"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Update dotfiles
|
|
||||||
dfu()
|
|
||||||
{
|
|
||||||
(
|
|
||||||
cd "$DOTFILES" && git pull --ff-only && ./install -q
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
# Weather in Tampere, or other city
|
|
||||||
weather()
|
|
||||||
{
|
|
||||||
# https://github.com/chubin/wttr.in#usage
|
|
||||||
local city="${1:-Tampere}"
|
|
||||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Docker
|
|
||||||
ssh-docker()
|
|
||||||
{
|
|
||||||
docker exec -it "$@" bash
|
|
||||||
}
|
|
||||||
|
|
||||||
# All the dig info
|
|
||||||
digga()
|
|
||||||
{
|
|
||||||
dig +nocmd "$1" any +multiline +noall +answer
|
|
||||||
}
|
|
||||||
|
|
||||||
# Rector project to php version 8.2 by default.
|
|
||||||
rector()
|
|
||||||
{
|
|
||||||
local php="${1:-82}"
|
|
||||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
|
||||||
"/project/$1" \
|
|
||||||
--set "php${php}" \
|
|
||||||
--autoload-file /project/vendor/autoload.php
|
|
||||||
}
|
|
||||||
|
|
||||||
# Commit everything
|
|
||||||
commit()
|
|
||||||
{
|
|
||||||
commitMessage="$*"
|
|
||||||
|
|
||||||
if [ "$commitMessage" = "" ]; then
|
|
||||||
commitMessage="Automated commit"
|
|
||||||
fi
|
|
||||||
|
|
||||||
git add .
|
|
||||||
eval "git commit -a -m '${commitMessage}'"
|
|
||||||
}
|
|
||||||
|
|
||||||
scheduler()
|
|
||||||
{
|
|
||||||
while :; do
|
|
||||||
php artisan schedule:run
|
|
||||||
echo "Sleeping 60 seconds..."
|
|
||||||
sleep 60
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" },
|
"animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" },
|
||||||
"bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" },
|
"bufdelete.nvim": { "branch": "master", "commit": "07d1f8ba79dec59d42b975a4df1c732b2e4e37b4" },
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
|
"bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
|
||||||
"catppuccin": { "branch": "main", "commit": "3d9a5ed556e289bce6c1fb0af89ec838360641b2" },
|
"catppuccin": { "branch": "main", "commit": "18267654c665310c665d3b7c6bc43d5f5ea5e410" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
||||||
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
|
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
|
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
# Helper variables, override with ENVs like `VERBOSE=1 dfm help`
|
# Helper variables, override with ENVs like `VERBOSE=1 dfm help`
|
||||||
: "${VERBOSE:=0}"
|
: "${VERBOSE:=0}"
|
||||||
: "${DOTFILES:=$HOME/.dotfiles}"
|
: "${DOTFILES:=$HOME/.dotfiles}"
|
||||||
: "${SHARED_SCRIPT:=$DOTFILES/scripts/shared.sh}"
|
|
||||||
: "${BREWFILE:=$DOTFILES/config/homebrew/Brewfile}"
|
: "${BREWFILE:=$DOTFILES/config/homebrew/Brewfile}"
|
||||||
: "${HOSTFILES:=$DOTFILES/hosts}"
|
: "${HOSTFILES:=$DOTFILES/hosts}"
|
||||||
|
|
||||||
@@ -17,9 +16,9 @@ SCRIPT=$(basename "$0")
|
|||||||
|
|
||||||
VERSION_NVM="v0.39.5"
|
VERSION_NVM="v0.39.5"
|
||||||
|
|
||||||
export DOTFILES_SHARED_LOADED=""
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
# shellcheck source=./../../scripts/shared.sh
|
# shellcheck source=./../../scripts/shared.sh
|
||||||
source "$SHARED_SCRIPT"
|
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||||
|
|
||||||
# Loads configs for better installation experience
|
# Loads configs for better installation experience
|
||||||
x-load-configs
|
x-load-configs
|
||||||
|
|||||||
16
local/bin/x-dc
Executable file
16
local/bin/x-dc
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Create directory if it doesn't exist already
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||||
|
# Licensed under MIT License. http://www.opensource.org/licenses/mit-license.
|
||||||
|
|
||||||
|
dir="$1"
|
||||||
|
|
||||||
|
[ $# -eq 0 ] && {
|
||||||
|
echo "Usage: $0 full/path/to/dir/to/create"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -d "$dir" ]; then
|
||||||
|
mkdir -p "$dir" && exit 0
|
||||||
|
fi
|
||||||
@@ -2,13 +2,13 @@
|
|||||||
# Load our configuration files
|
# Load our configuration files
|
||||||
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
|
||||||
|
|
||||||
: "${DOTFILES:=$HOME/.dotfiles}"
|
DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||||
|
|
||||||
CONFIG_PATH="$DOTFILES/config"
|
CONFIG_PATH="$DOTFILES/config"
|
||||||
|
|
||||||
# Load the shell dotfiles, and then some:
|
# Load the shell dotfiles, and then some:
|
||||||
function load()
|
function x-load-config-fn()
|
||||||
{
|
{
|
||||||
for FILE in $CONFIG_PATH/{exports,alias,functions}; do
|
for FILE in $CONFIG_PATH/{exports,alias,functions}; do
|
||||||
FILENAME="$FILE"
|
FILENAME="$FILE"
|
||||||
@@ -28,4 +28,4 @@ function load()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
load
|
x-load-config-fn
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
DOTFILES_SHARED_LOADED=""
|
|
||||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||||
|
|
||||||
PBB_REQUIRED_TOOLS=(git cheat)
|
PBB_REQUIRED_TOOLS=(git cheat)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
# shellcheck disable=SC2231,SC2034,SC2181,SC2068
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
DOTFILES_SHARED_LOADED=""
|
|
||||||
source "$HOME/.dotfiles/scripts/shared.sh"
|
source "$HOME/.dotfiles/scripts/shared.sh"
|
||||||
|
|
||||||
TLDR_REQUIRED_TOOLS=(git cheat)
|
TLDR_REQUIRED_TOOLS=(git cheat)
|
||||||
|
|||||||
@@ -5,11 +5,160 @@
|
|||||||
|
|
||||||
# Helper env variables. Use like this: VERBOSE=1 ./script.sh
|
# Helper env variables. Use like this: VERBOSE=1 ./script.sh
|
||||||
: "${VERBOSE:=0}"
|
: "${VERBOSE:=0}"
|
||||||
: "${DOTFILES:=$HOME/.dotfiles}"
|
|
||||||
|
|
||||||
|
# Modified from https://stackoverflow.com/a/28776166
|
||||||
|
(
|
||||||
|
[[ -n $ZSH_VERSION && $ZSH_EVAL_CONTEXT =~ :file$ ]] \
|
||||||
|
|| [[ -n $BASH_VERSION ]] && (return 0 2> /dev/null)
|
||||||
|
) && sourced=1 || sourced=0
|
||||||
|
|
||||||
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
DOTFILES_CURRENT_SHELL=$(ps -p $$ -oargs=)
|
DOTFILES_CURRENT_SHELL=$(ps -p $$ -oargs=)
|
||||||
export DOTFILES_CURRENT_SHELL
|
export DOTFILES_CURRENT_SHELL
|
||||||
|
|
||||||
|
# Explicitly set XDG folders
|
||||||
|
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
|
||||||
|
# custom variables
|
||||||
|
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
|
# Remove directory from the PATH variable
|
||||||
|
# usage: path_remove ~/.local/bin
|
||||||
|
function path_remove
|
||||||
|
{
|
||||||
|
PATH=$(echo -n "$PATH" | awk -v RS=: -v ORS=: "\$0 != \"$1\"" | sed 's/:$//')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Append directory to the PATH
|
||||||
|
# usage: path_append ~/.local/bin
|
||||||
|
function path_append
|
||||||
|
{
|
||||||
|
path_remove "$1"
|
||||||
|
PATH="${PATH:+"$PATH:"}$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prepend directory to the PATH
|
||||||
|
# usage: path_prepend ~/.local/bin
|
||||||
|
function path_prepend
|
||||||
|
{
|
||||||
|
path_remove "$1"
|
||||||
|
PATH="$1${PATH:+":$PATH"}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create directory if it doesn't exist already
|
||||||
|
x-dc()
|
||||||
|
{
|
||||||
|
dir="$1"
|
||||||
|
|
||||||
|
[ $# -eq 0 ] && {
|
||||||
|
echo "Usage: $0 full/path/to/dir/to/create"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -d "$dir" ]; then
|
||||||
|
mkdir -p "$dir" && exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a new directory and enter it
|
||||||
|
mkd()
|
||||||
|
{
|
||||||
|
mkdir -p "$@" && cd "$@" || exit
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run command silently
|
||||||
|
# Usage: silent uptime
|
||||||
|
silent()
|
||||||
|
{
|
||||||
|
"$@" >&/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if a file contains non-ascii characters
|
||||||
|
nonascii()
|
||||||
|
{
|
||||||
|
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cache commands using bkt if installed
|
||||||
|
if command -v bkt >&/dev/null; then
|
||||||
|
bkt()
|
||||||
|
{
|
||||||
|
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# If bkt isn't installed skip its arguments and just execute directly.
|
||||||
|
# Optionally write a msg to stderr suggesting users install bkt.
|
||||||
|
bkt()
|
||||||
|
{
|
||||||
|
while [[ "$1" == --* ]]; do shift; done
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shorthand for checking if the system has the bin in path,
|
||||||
|
# this version does not use caching
|
||||||
|
# usage: have_command php && php -v
|
||||||
|
function have_command
|
||||||
|
{
|
||||||
|
command -v "$1" >&/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# shorthand for checking if the system has the bin in path,
|
||||||
|
# this version uses caching
|
||||||
|
# usage: have php && php -v
|
||||||
|
function have
|
||||||
|
{
|
||||||
|
bkt -- which "$1" >&/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
function brew_installed
|
||||||
|
{
|
||||||
|
bkt -- brew list
|
||||||
|
}
|
||||||
|
|
||||||
|
# shorthand for checking if brew package is installed
|
||||||
|
# usage: have_brew php && php -v
|
||||||
|
function have_brew
|
||||||
|
{
|
||||||
|
! have brew && return 125
|
||||||
|
|
||||||
|
if bkt -- brew list "$1" &> /dev/null; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
CONFIG_PATH="$DOTFILES/config"
|
||||||
|
|
||||||
|
# Load the shell dotfiles, and then some:
|
||||||
|
function x-load-config-fn()
|
||||||
|
{
|
||||||
|
for FILE in $CONFIG_PATH/{exports,alias,functions}; do
|
||||||
|
FILENAME="$FILE"
|
||||||
|
HOST="$(hostname -s)"
|
||||||
|
# global (exports|alias|functions) FILENAME for all hosts
|
||||||
|
# shellcheck source=../config/exports
|
||||||
|
[ -r "$FILENAME" ] && source "$FILENAME"
|
||||||
|
# global secret FILENAME, git ignored
|
||||||
|
# shellcheck source=../config/exports-secret
|
||||||
|
[ -r "$FILENAME-secret" ] && source "$FILENAME-secret"
|
||||||
|
# host specific (exports|alias|functions) FILENAME
|
||||||
|
# shellcheck source=../config/exports
|
||||||
|
[ -r "$FILENAME-$HOST" ] && source "$FILENAME-$HOST"
|
||||||
|
# host specific (exports|alias|functions) FILENAME, git ignored
|
||||||
|
# shellcheck source=../config/exports
|
||||||
|
[ -r "$FILENAME-$HOST-secret" ] && source "$FILENAME-$HOST-secret"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
x-load-config-fn
|
||||||
|
|
||||||
source "$DOTFILES/local/bin/msgr"
|
source "$DOTFILES/local/bin/msgr"
|
||||||
|
|
||||||
# -- Menu builder -- #
|
# -- Menu builder -- #
|
||||||
@@ -67,79 +216,6 @@ function menu_usage()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# Cache commands using bkt if installed
|
|
||||||
if command -v bkt >&/dev/null; then
|
|
||||||
bkt()
|
|
||||||
{
|
|
||||||
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
# If bkt isn't installed skip its arguments and just execute directly.
|
|
||||||
# Optionally write a msg to stderr suggesting users install bkt.
|
|
||||||
bkt()
|
|
||||||
{
|
|
||||||
while [[ "$1" == --* ]]; do shift; done
|
|
||||||
"$@"
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shorthand for checking if the system has the bin in path,
|
|
||||||
# this version does not use caching
|
|
||||||
# usage: have_command php && php -v
|
|
||||||
function have_command
|
|
||||||
{
|
|
||||||
command -v "$1" >&/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
# shorthand for checking if the system has the bin in path,
|
|
||||||
# this version uses caching
|
|
||||||
# usage: have php && php -v
|
|
||||||
function have
|
|
||||||
{
|
|
||||||
bkt -- which "$1" >&/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
function brew_installed
|
|
||||||
{
|
|
||||||
bkt -- brew list
|
|
||||||
}
|
|
||||||
|
|
||||||
# shorthand for checking if brew package is installed
|
|
||||||
# usage: have_brew php && php -v
|
|
||||||
function have_brew
|
|
||||||
{
|
|
||||||
! have brew && return 125
|
|
||||||
|
|
||||||
if bkt -- brew list "$1" &> /dev/null; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove directory from the PATH variable
|
|
||||||
# usage: path_remove ~/.local/bin
|
|
||||||
function path_remove
|
|
||||||
{
|
|
||||||
PATH=$(echo -n "$PATH" | awk -v RS=: -v ORS=: "\$0 != \"$1\"" | sed 's/:$//')
|
|
||||||
}
|
|
||||||
|
|
||||||
# Append directory to the PATH
|
|
||||||
# usage: path_append ~/.local/bin
|
|
||||||
function path_append
|
|
||||||
{
|
|
||||||
path_remove "$1"
|
|
||||||
PATH="${PATH:+"$PATH:"}$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prepend directory to the PATH
|
|
||||||
# usage: path_prepend ~/.local/bin
|
|
||||||
function path_prepend
|
|
||||||
{
|
|
||||||
path_remove "$1"
|
|
||||||
PATH="$1${PATH:+":$PATH"}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Creates a random string
|
# Creates a random string
|
||||||
rnd()
|
rnd()
|
||||||
{
|
{
|
||||||
@@ -194,37 +270,3 @@ function replacable()
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create directory if it doesn't exist already
|
|
||||||
x-dc()
|
|
||||||
{
|
|
||||||
dir="$1"
|
|
||||||
|
|
||||||
[ $# -eq 0 ] && {
|
|
||||||
echo "Usage: $0 full/path/to/dir/to/create"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ ! -d "$dir" ]; then
|
|
||||||
mkdir -p "$dir" && exit 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create a new directory and enter it
|
|
||||||
mkd()
|
|
||||||
{
|
|
||||||
mkdir -p "$@" && cd "$@" || exit
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run command silently
|
|
||||||
# Usage: silent uptime
|
|
||||||
silent()
|
|
||||||
{
|
|
||||||
"$@" >&/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if a file contains non-ascii characters
|
|
||||||
nonascii()
|
|
||||||
{
|
|
||||||
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user