mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-03-11 12:03:23 +00:00
Feat(tools): nb
This commit is contained in:
18
base/nbrc
Normal file
18
base/nbrc
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
###############################################################################
|
||||||
|
# .nbrc
|
||||||
|
#
|
||||||
|
# Configuration file for `nb`, a command line note-taking, bookmarking,
|
||||||
|
# and knowledge base application with encryption, search, Git-backed syncing,
|
||||||
|
# and more in a single portable script.
|
||||||
|
#
|
||||||
|
# Edit this file manually or manage settings using the `nb settings`
|
||||||
|
# subcommand. Configuration options are set as environment variables, eg:
|
||||||
|
# export NB_ENCRYPTION_TOOL=gpg
|
||||||
|
#
|
||||||
|
# https://github.com/xwmx/nb
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
export NB_DIR="${NB_DIR:-$HOME/.local/state/nb}" # Set by `nb` • Mon May 8 15:25:12 EEST 2023
|
||||||
|
|
||||||
|
export NB_COLOR_THEME="${NB_COLOR_THEME:-unicorn}" # Set by `nb` • Mon May 8 15:41:22 EEST 2023
|
||||||
@@ -5,6 +5,10 @@ autoload -U colors zsh/terminfo
|
|||||||
colors
|
colors
|
||||||
setopt correct
|
setopt correct
|
||||||
|
|
||||||
|
# Add completion scripts to zsh path
|
||||||
|
fpath=(~/.config/zsh/completion $fpath)
|
||||||
|
autoload -Uz compinit && compinit -i
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
|
|||||||
@@ -72,6 +72,12 @@ have irssi && {
|
|||||||
x-dc "$IRSSI_CONFIG_HOME"
|
x-dc "$IRSSI_CONFIG_HOME"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# nb, https://xwmx.github.io/nb/
|
||||||
|
have nb && {
|
||||||
|
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||||
|
x-dc "$NB_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
# nvm, the node version manager
|
# nvm, the node version manager
|
||||||
export NVM_LAZY_LOAD=true
|
export NVM_LAZY_LOAD=true
|
||||||
export NVM_COMPLETION=true
|
export NVM_COMPLETION=true
|
||||||
@@ -80,6 +86,12 @@ export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
|||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
|
# Add npm packages to path
|
||||||
|
have node && {
|
||||||
|
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||||
|
path_append "$NVM_NODE_BIN_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
# op (1Password cli) is present
|
# op (1Password cli) is present
|
||||||
have op && {
|
have op && {
|
||||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||||
|
|||||||
174
config/zsh/completion/_nb
Normal file
174
config/zsh/completion/_nb
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
#compdef nb
|
||||||
|
###############################################################################
|
||||||
|
# __ _
|
||||||
|
# \ \ _ __ | |__
|
||||||
|
# \ \ | '_ \| '_ \
|
||||||
|
# / / | | | | |_) |
|
||||||
|
# /_/ |_| |_|_.__/
|
||||||
|
#
|
||||||
|
# [nb] Command line and local web note-taking, bookmarking, and archiving with
|
||||||
|
# plain text data storage, encryption, filtering and search, pinning, #tagging,
|
||||||
|
# Git-backed versioning and syncing, Pandoc-backed conversion, global and local
|
||||||
|
# notebooks, customizable color themes, [[wiki-style linking]], plugins, and
|
||||||
|
# more in a single portable, user-friendly script.
|
||||||
|
#
|
||||||
|
# https://github.com/xwmx/nb
|
||||||
|
###############################################################################
|
||||||
|
_nb_subcommands() {
|
||||||
|
# _nb_cache_completions()
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# _nb_cache_completions <path>
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# Cache completions for `nb`. Generating completions can be slow and
|
||||||
|
# native shell caching doesn't appear to help.
|
||||||
|
_nb_cache_completions() {
|
||||||
|
local _cache_path="${1:-}"
|
||||||
|
|
||||||
|
[[ -z "${_cache_path:-}" ]] && return 0
|
||||||
|
|
||||||
|
# Remove outdated cache files.
|
||||||
|
|
||||||
|
local _base_cache_path="${_cache_path%-*}"
|
||||||
|
|
||||||
|
local __suffix=
|
||||||
|
for __suffix in "zsh" "v1"
|
||||||
|
do
|
||||||
|
if [[ -e "${_base_cache_path:?}-${__suffix:?}" ]]
|
||||||
|
then
|
||||||
|
rm -f "${_base_cache_path:?}-${__suffix:?}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Rebuild completion cache.
|
||||||
|
|
||||||
|
local _commands=
|
||||||
|
IFS=$'\n' _commands=($(nb subcommands))
|
||||||
|
|
||||||
|
local _notebooks=
|
||||||
|
IFS=$'\n' _notebooks=($(nb notebooks --names --no-color --unarchived))
|
||||||
|
|
||||||
|
local _completions=()
|
||||||
|
IFS=$'\n' _completions=(${_commands[@]})
|
||||||
|
|
||||||
|
local _commands_cached=
|
||||||
|
local _notebooks_cached=
|
||||||
|
|
||||||
|
if [[ -e "${_cache_path}" ]]
|
||||||
|
then
|
||||||
|
local _counter=0
|
||||||
|
|
||||||
|
local __line=
|
||||||
|
while IFS= read -r __line
|
||||||
|
do
|
||||||
|
_counter=$((_counter+1))
|
||||||
|
|
||||||
|
if [[ "${_counter}" == 1 ]]
|
||||||
|
then
|
||||||
|
_commands_cached="${__line}"
|
||||||
|
elif [[ "${_counter}" == 2 ]]
|
||||||
|
then
|
||||||
|
_notebooks_cached="${__line}"
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < "${_cache_path}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${_commands_cached}" != "${_commands[*]:-}" ]] ||
|
||||||
|
[[ "${_notebooks_cached}" != "${_notebooks[*]:-}" ]]
|
||||||
|
then
|
||||||
|
# Construct <notebook>:<subcommand> completions.
|
||||||
|
local __notebook=
|
||||||
|
for __notebook in "${_notebooks[@]}"
|
||||||
|
do
|
||||||
|
local __command=
|
||||||
|
for __command in "${_commands[@]}"
|
||||||
|
do
|
||||||
|
if [[ -n "${__notebook:-}" ]] &&
|
||||||
|
[[ -n "${__command:-}" ]]
|
||||||
|
then
|
||||||
|
_completions+=("${__notebook}:${__command}")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
local _directory_path=
|
||||||
|
_directory_path="$(dirname "${_cache_path}")"
|
||||||
|
|
||||||
|
mkdir -p "${_directory_path}"
|
||||||
|
|
||||||
|
if [[ -f "${_cache_path:?}" ]]
|
||||||
|
then
|
||||||
|
rm -f "${_cache_path:?}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
touch "${_cache_path:?}"
|
||||||
|
|
||||||
|
{
|
||||||
|
(IFS=$' '; printf "%s\\n" "${_commands[*]}")
|
||||||
|
(IFS=$' '; printf "%s\\n" "${_notebooks[*]}")
|
||||||
|
printf "%s\\n" "${_completions[@]}"
|
||||||
|
} >> "${_cache_path}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
local _nb_dir=
|
||||||
|
_nb_dir="$(nb env | grep 'NB_DIR' | cut -d = -f 2)"
|
||||||
|
|
||||||
|
if [[ -z "${_nb_dir:?}" ]] ||
|
||||||
|
[[ ! -e "${_nb_dir}" ]]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
elif [[ -L "${_nb_dir}" ]]
|
||||||
|
then
|
||||||
|
if hash "realpath" 2>/dev/null
|
||||||
|
then
|
||||||
|
_nb_dir="$(realpath "${_nb_dir}")"
|
||||||
|
else
|
||||||
|
_nb_dir="$(readlink "${_nb_dir}")"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "${_nb_dir}" ]]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
local _cache_path="${_nb_dir:?}/.cache/nb-completion-cache-v2"
|
||||||
|
local _completions_cached=()
|
||||||
|
|
||||||
|
if [[ ! -e "${_cache_path}" ]]
|
||||||
|
then
|
||||||
|
_nb_cache_completions "${_cache_path}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e "${_cache_path}" ]]
|
||||||
|
then
|
||||||
|
local _counter=0
|
||||||
|
|
||||||
|
local __line=
|
||||||
|
while IFS= read -r __line
|
||||||
|
do
|
||||||
|
_counter=$((_counter+1))
|
||||||
|
|
||||||
|
if [[ "${_counter}" -gt 2 ]]
|
||||||
|
then
|
||||||
|
_completions_cached+=("${__line}")
|
||||||
|
fi
|
||||||
|
done < "${_cache_path}"
|
||||||
|
|
||||||
|
(_nb_cache_completions "${_cache_path}" &)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${?}" -eq 0 ]]
|
||||||
|
then
|
||||||
|
compadd -- "${_completions_cached[@]}"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_nb_subcommands "$@"
|
||||||
@@ -15,6 +15,10 @@ have npm && {
|
|||||||
"prettier"
|
"prettier"
|
||||||
"corepack"
|
"corepack"
|
||||||
"standardjs"
|
"standardjs"
|
||||||
|
# CLI and local web plain text note‑taking, bookmarking, and archiving
|
||||||
|
# with linking, tagging, filtering, search, Git versioning & syncing,
|
||||||
|
# Pandoc conversion, + more, in a single portable script.
|
||||||
|
"nb.sh"
|
||||||
)
|
)
|
||||||
|
|
||||||
for pkg in "${packages[@]}"; do
|
for pkg in "${packages[@]}"; do
|
||||||
|
|||||||
Reference in New Issue
Block a user