JMGLTLTFSWLJVKR5AOL2OR7WXI35YZW356OHB3GO4FJI5LAHOGWAC JROTWG7ECAT5QSN2RT6EQMU246HEVNRV7TWHK7MTV5WTHR55I2EQC MZHO6Q4N7Z3FWXDFSITA25VMJZT5SKT3FX2HW4WHTWWSMFQXKF2QC 54L5HCFQ6DJMC3RQQ7UANRYQBBIPBFT5XLOT2OVUMOG33SZ2H5MQC 5WFCHG5XRBOE3CWAZODDC4E5GO65X32RVIEOZHDXQ34TAUPA65MAC AZQERHZXRFQQH4FCLDXLN577EAA4WW6OVXIKFGDEIOEVX462P56AC QSIH36H4R2A2EDRFRM7R75YNITYZLIA43TFCCAOYVOQ2TEHLTN4AC JO5NBAQPJX3HKWBE6GQ5LOK4SYO2K5ZIGPT6HRRJB7N5AUQ75UHAC # Find an awk implementation# Prefer nawk over mawk and mawk over awk(( $+commands[mawk] )) && : "${ZSH_PIJUL_PROMPT_AWK_CMD:=mawk}"(( $+commands[nawk] )) && : "${ZSH_PIJUL_PROMPT_AWK_CMD:=nawk}": "${ZSH_PIJUL_PROMPT_AWK_CMD:=awk}"
typeset -g __PIJUL_CHANNEL __PIJUL_REMOTE __PIJUL_STATUS __PIJUL_SECONDARY __PIJUL_FORCE_BLANK
function _zsh_pijul_prompt_pijul_latest_state_cmd() {command pijul log --state --limit 1 2>/dev/null \|| echo "fatal: pijul latest state command failed"
echo -n "$(__pijul_element "$ZSH_THEME_PIJUL_PROMPT_PREFIX")"echo -n "$(__pijul_element "$__PIJUL_CHANNEL")"echo -n "$(__pijul_element "$__PIJUL_REMOTE")"echo -n "$(__pijul_element "$ZSH_THEME_PIJUL_PROMPT_SEPARATOR")"echo -n "$(__pijul_element "$__PIJUL_STATUS")"echo -n "$(__pijul_element "$ZSH_THEME_PIJUL_PROMPT_SUFFIX")"
function _zsh_pijul_prompt_pijul_remote_cmd() {command pijul remote 2>/dev/null \|| echo "fatal: pijul remote command failed"
function __pijul_prompt_secondary() {__exit_unless_pijul_repoif [[ -n "$ZSH_PIJUL_PROMPT_ENABLE_SECONDARY" ]]; thenecho -n "$(__pijul_element "$ZSH_THEME_PIJUL_PROMPT_SECONDARY_PREFIX")"echo -n "$(__pijul_element "$__PIJUL_SECONDARY")"echo -n "$(__pijul_element "$ZSH_THEME_PIJUL_PROMPT_SECONDARY_SUFFIX")"fi
function _zsh_pijul_prompt_pijul_status_cmd() {command pijul diff --short --untracked 2>/dev/null \|| echo "fatal: pijul status command failed"
function __pijul_channel() {local elementelement=$(command pijul channel 2>/dev/null | sed -n 's/^\* //p')__pijul_element "$ZSH_THEME_PIJUL_PROMPT_CHANNEL" "$element"
function _zsh_pijul_prompt_pijul_tags_cmd() {command pijul tag 2>/dev/null \|| echo "fatal: pijul tags command failed"
function __pijul_channel_completion() {if [[ "$__PIJUL_CHANNEL" != "$1" ]]; then__PIJUL_CHANNEL="$1"zle && { zle reset-prompt; zle -R; }fi
function _zsh_pijul_prompt_pijul_status() {emulate -L zshlocal channelchannel=$(_zsh_pijul_prompt_pijul_channel_cmd | sed -n 's/^\* //p')
if [[ -z "$element" ]]; then__pijul_element "$ZSH_THEME_PIJUL_PROMPT_REMOTE_NO_TRACKING"elif [[ "$element" == "symbol" ]]; then__pijul_element "$ZSH_THEME_PIJUL_PROMPT_REMOTE_SYMBOL"elif [[ "$element" == "full" ]]; then__pijul_element "$ZSH_THEME_PIJUL_PROMPT_REMOTE_PREFIX" "$element" "$ZSH_THEME_PIJUL_PROMPT_REMOTE_SUFFIX"fi}
# Until it's possible to retrieve the default remote, take the first listed.# This will not necessarily be the default remote, but rather the first remote# added to the repository.local remoteremote=$(_zsh_pijul_prompt_pijul_remote_cmd | sed -En 's/^.*: (.*@)?//p' | head -n 1)_zsh_pijul_prompt_pijul_status_cmd | $ZSH_PIJUL_PROMPT_AWK_CMD \-v PREFIX="$ZSH_THEME_PIJUL_PROMPT_PREFIX" \-v SUFFIX="$ZSH_THEME_PIJUL_PROMPT_SUFFIX" \-v SEPARATOR="$ZSH_THEME_PIJUL_PROMPT_SEPARATOR" \-v CHANNEL="$ZSH_THEME_PIJUL_PROMPT_CHANNEL" \-v REMOTE_TYPE="$ZSH_PIJUL_PROMPT_SHOW_REMOTE" \-v REMOTE_SYMBOL="$ZSH_THEME_PIJUL_PROMPT_REMOTE_SYMBOL" \-v REMOTE_NO_TRACKING="$ZSH_THEME_PIJUL_PROMPT_REMOTE_NO_TRACKING" \-v REMOTE_PREFIX="$ZSH_THEME_PIJUL_PROMPT_REMOTE_PREFIX" \-v REMOTE_SUFFIX="$ZSH_THEME_PIJUL_PROMPT_REMOTE_SUFFIX" \-v SHOW_LOCAL_COUNTS="$ZSH_PIJUL_PROMPT_SHOW_LOCAL_COUNTS" \-v CHANGED="$ZSH_THEME_PIJUL_PROMPT_CHANGED" \-v ADDED="$ZSH_THEME_PIJUL_PROMPT_ADDED" \-v REMOVED="$ZSH_THEME_PIJUL_PROMPT_REMOVED" \-v RESURRECTED="$ZSH_THEME_PIJUL_PROMPT_RESURRECTED" \-v SOLVED="$ZSH_THEME_PIJUL_PROMPT_SOLVED" \-v UNSOLVED="$ZSH_THEME_PIJUL_PROMPT_UNSOLVED" \-v UNTRACKED="$ZSH_THEME_PIJUL_PROMPT_UNTRACKED" \-v CLEAN="$ZSH_THEME_PIJUL_PROMPT_CLEAN" \-v RC="%{$reset_color%}%b%f%k" \-v channel="$channel" \-v remote="$remote" \'BEGIN {ORS = ""fatal = 0changed = 0added = 0removed = 0resurrected = 0solved = 0unsolved = 0untracked = 0}
function __pijul_remote_completion() {if [[ "$__PIJUL_REMOTE" != "$1" ]]; then__PIJUL_REMOTE="$1"zle && { zle reset-prompt; zle -R; }fi}
function status_element(prefix, content, suffix, show_conent) {print(prefix)
function __pijul_status() {command pijul diff --short --untracked 2>/dev/null | $ZSH_PIJUL_PROMPT_AWK_CMD \-v SEPARATOR="$ZSH_THEME_PIJUL_PROMPT_SEPARATOR" \-v CHANNEL="$ZSH_THEME_PIJUL_PROMPT_CHANNEL" \-v SHOW_LOCAL_COUNTS="$ZSH_PIJUL_PROMPT_SHOW_LOCAL_COUNTS" \-v CHANGED="$ZSH_THEME_PIJUL_PROMPT_CHANGED" \-v ADDED="$ZSH_THEME_PIJUL_PROMPT_ADDED" \-v REMOVED="$ZSH_THEME_PIJUL_PROMPT_REMOVED" \-v RESURRECTED="$ZSH_THEME_PIJUL_PROMPT_RESURRECTED" \-v SOLVED="$ZSH_THEME_PIJUL_PROMPT_SOLVED" \-v UNSOLVED="$ZSH_THEME_PIJUL_PROMPT_UNSOLVED" \-v UNTRACKED="$ZSH_THEME_PIJUL_PROMPT_UNTRACKED" \-v CLEAN="$ZSH_THEME_PIJUL_PROMPT_CLEAN" \-v RESET="%{$reset_color%}%b%f%k" \'BEGIN {ORS = ""changed = 0added = 0removed = 0resurrected = 0solved = 0unsolved = 0untracked = 0}
END {if (fatal == 1) {exit(1)
END {if (changed == 0 && added == 0 && removed == 0 && resurrected == 0 && solved == 0 && unsolved == 0 && untracked == 0) {pijul_element(CLEAN)} else {if (changed > 0) {pijul_element(CHANGED, changed, "", SHOW_LOCAL_COUNTS)
status_element(PREFIX)status_element(CHANNEL, channel)if (remote == "") {status_element(REMOTE_NO_TRACKING)} else if (REMOTE_TYPE == "symbol") {status_element(REMOTE_SYMBOL)} else if (REMOTE_TYPE == "full") {status_element(REMOTE_PREFIX, remote, REMOTE_SUFFIX)
if (added > 0) {pijul_element(ADDED, added, "", SHOW_LOCAL_COUNTS)
if (changed == 0 && added == 0 && removed == 0 && resurrected == 0 && solved == 0 && unsolved == 0 && untracked == 0) {status_element(CLEAN)} else {if (changed > 0) {status_element(CHANGED, changed, "", SHOW_LOCAL_COUNTS)}if (added > 0) {status_element(ADDED, added, "", SHOW_LOCAL_COUNTS)}if (removed > 0) {status_element(REMOVED, removed, "", SHOW_LOCAL_COUNTS)}if (resurrected > 0) {status_element(RESURRECTED, resurrected, "", SHOW_LOCAL_COUNTS)}
if (removed > 0) {pijul_element(REMOVED, removed, "", SHOW_LOCAL_COUNTS)}
local statestate=$(_zsh_pijul_prompt_pijul_latest_state_cmd | $ZSH_PIJUL_PROMPT_AWK_CMD \'$1 == "State:" { print $2 }')
function __pijul_secondary() {if [[ -n "$ZSH_PIJUL_PROMPT_ENABLE_SECONDARY" ]]; thenlocal statestate=$(command pijul log --state --limit 1 2>/dev/null | $ZSH_PIJUL_PROMPT_AWK_CMD \'$1 == "State:" { print $2 }')
_zsh_pijul_prompt_pijul_tags_cmd | xargs -L 4 | $ZSH_PIJUL_PROMPT_AWK_CMD \-v PREFIX="$ZSH_THEME_PIJUL_PROMPT_SECONDARY_PREFIX" \-v SUFFIX="$ZSH_THEME_PIJUL_PROMPT_SECONDARY_SUFFIX" \
command pijul tag 2>/dev/null | xargs -L 4 | $ZSH_PIJUL_PROMPT_AWK_CMD \
function __pijul_secondary_completion() {if [[ "$__PIJUL_SECONDARY" != "$1" ]]; then__PIJUL_SECONDARY="$1"zle && { zle reset-prompt; zle -R; }fi}function __pijul_element() {echo -n "$1"echo -n "$2"echo -n "$3"echo -n "%{$reset_color%}%b%f%k"}# HOOKS ------------------------------------------------------------------------function __pijul_channel_precmd_hook() {if [[ -n "$__PIJUL_FORCE_BLANK" ]]; then__PIJUL_CHANNEL=""fi__async __pijul_channel __pijul_channel_completion}function __pijul_remote_precmd_hook() {if [[ -n "$__PIJUL_FORCE_BLANK" ]]; then__PIJUL_REMOTE=""fi__async __pijul_remote __pijul_remote_completion}function __pijul_status_precmd_hook() {if [[ -n "$__PIJUL_FORCE_BLANK" ]]; then__PIJUL_STATUS=""fi__async __pijul_status __pijul_status_completion}function __pijul_secondary_precmd_hook() {if [[ -n "$__PIJUL_FORCE_BLANK" ]]; then__PIJUL_SECONDARY=""fi__async __pijul_secondary __pijul_secondary_completion}function __pijul_chpwd_hook() {__PIJUL_CHANNEL=""__PIJUL_REMOTE=""__PIJUL_STATUS=""__PIJUL_SECONDARY=""}
# If we've got a pending request, cancel itif [[ -n "$_ZSH_PIJUL_PROMPT_ASYNC_FD" ]] \&& { true <&$_ZSH_PIJUL_PROMPT_ASYNC_FD } 2>/dev/nullthen# Close the file descriptor and remove the handlerexec {_ZSH_PIJUL_PROMPT_ASYNC_FD}<&-zle -F $_ZSH_PIJUL_PROMPT_ASYNC_FD
local fdlocal pidlocal running_fd="${__fds[$id]}"local running_pid="${__pids[$id]}"if [[ -n "$running_fd" ]] && { true <&$running_fd; } 2>/dev/null; thenexec {running_fd}<&-zle -F "$running_fd"
# Called when new data is ready to be read from the pipe# First arg will be fd ready for reading# Second arg will be passed in case of error_ZSH_PIJUL_PROMPT_STATUS_OUTPUT=""_ZSH_PIJUL_PROMPT_STATUS_SECONDARY_OUTPUT=""
function __async_completion() {emulate -L zsh
local old_primary="$_ZSH_PIJUL_PROMPT_STATUS_OUTPUT"local old_secondary="$_ZSH_PIJUL_PROMPT_STATUS_SECONDARY_OUTPUT"local fd_datalocal -a output
if [[ -z "$2" || "$2" == "hup" ]]; thenfor key in ${(k)__pids}doif [[ "$fd" == ${__fds[$key]} ]]; thenid=$keycompletion=${__completions[$id]}breakfidone
if [[ -z "$2" || "$2" == "hup" ]]then# Read output from fdfd_data="$(cat <&$1)"output=( ${(s:##secondary##:)fd_data} )_ZSH_PIJUL_PROMPT_STATUS_OUTPUT="${output[1]}"_ZSH_PIJUL_PROMPT_STATUS_SECONDARY_OUTPUT="${output[2]}"
[[ -z $id ]] && return 1
function _zsh_pijul_prompt_precmd_hook() {if [[ -n "$ZSH_PIJUL_PROMPT_FORCE_BLANK" ]]then_ZSH_PIJUL_PROMPT_STATUS_OUTPUT=""_ZSH_PIJUL_PROMPT_STATUS_SECONDARY_OUTPUT=""fi
function __cleanup() {local id="$1"
&& add-zsh-hook precmd _zsh_pijul_prompt_precmd_hook
&& add-zsh-hook precmd __pijul_channel_precmd_hook \&& add-zsh-hook precmd __pijul_remote_precmd_hook \&& add-zsh-hook precmd __pijul_status_precmd_hook \&& add-zsh-hook precmd __pijul_secondary_precmd_hook \&& add-zsh-hook chpwd __pijul_chpwd_hook \
ZSH_THEME_PIJUL_PROMPT_CHANGED="%{$fg[magenta]%}∆"ZSH_THEME_PIJUL_PROMPT_ADDED="%{$fg[green]%}+"ZSH_THEME_PIJUL_PROMPT_REMOVED="%{$fg[red]%}−"ZSH_THEME_PIJUL_PROMPT_RESURRECTED="%{$fg[grey]%}✝"ZSH_THEME_PIJUL_PROMPT_SOLVED="%{$fg[green]%}⛙"ZSH_THEME_PIJUL_PROMPT_UNSOLVED="%{$fg[red]%}×"ZSH_THEME_PIJUL_PROMPT_UNTRACKED="%{$fg[yellow]%}…"ZSH_THEME_PIJUL_PROMPT_CLEAN="%{$fg_bold[green]%}✓"
ZSH_THEME_PIJUL_PROMPT_CHANGED="%F{magenta}∆"ZSH_THEME_PIJUL_PROMPT_ADDED="%F{green}+"ZSH_THEME_PIJUL_PROMPT_REMOVED="%F{red}−"ZSH_THEME_PIJUL_PROMPT_RESURRECTED="\033[38;5;12m✝"ZSH_THEME_PIJUL_PROMPT_SOLVED="%F{green}⛙"ZSH_THEME_PIJUL_PROMPT_UNSOLVED="%F{red}×"ZSH_THEME_PIJUL_PROMPT_UNTRACKED="%F{yellow}…"ZSH_THEME_PIJUL_PROMPT_CLEAN="%B%F{green}✓"