pijul command line aliases, tested with bash.
#!/bin/bash
# * pijul command line aliases
# These aliases and usage notes help me be productive with pijul.
# They are tested with bash. If you'd like to try them:
#
# $ pijul clone https://nest.pijul.com/simonmichael/pijul-scripts
# $ . pijul-scripts/bashrc

THISFILE=~/src/pijul-scripts/bashrc
PIJULCONFDIR=~/Library/Application\ Support/pijul  # mac

# pjh - show help for these aliases
pjh() { grep -E '^# (pj|\*)' "$THISFILE" | sed -e 's/^# \*\*/\n**/' -e 's/^# //' ; }

# pjhh - show more verbose help with equivalent commands
pjhh() { grep -E '^# (pj|\*|  \S)' "$THISFILE" | sed -e 's/^# \*\*/\n**/' -e 's/^# //' ; }

# pj [CMD] - run a pijul command or show pijul's help
alias pj=pijul

# ** Setup/uninstall helpers

# pjkeygen - generate a change-signing key for current user
#   pijul key generate `whoami`
alias pjkeygen='pj key generate `whoami`'

# pjconfrm - erase current user's pijul config and keys
#   rm -ri $PIJULCONFDIR
# shellcheck disable=SC2139
alias pjconfrm="echo 'warning: this will erase your pijul config and keys'; rm -ri \"$PIJULCONFDIR\""

# # pjreporm - immediately erase pijul config and history in the current directory
# alias pjreporm='rm -rf .pijul'

# ** List recorded changes in current repo

# pjl - standard list
#   pijul log (like git log, darcs log)
alias pjl='pj log'

# pjlv - list with full descriptions. (?)
#   pijul log --description
alias pjlv='pj log --description'

# pjls - list with summary of file changes
#   (like git log --stat, darcs log -s)
pjls() { for H in $(pjlh); do echo "$H"; pjshowstat "$H"; echo; done; }

# pjhashes [N] - list the change hashes, or just the last N hashes
#    pijul log --hash-only
pjhashes() {
    N="$1"
    if [[ -n $N ]]; then
  pj log --hash-only | head -n "$N"
    else
  pj log --hash-only
    fi
}

# ** Inspect a recorded change

# pjshow [HASH] - show the last or specified change in full
#   pijul change (like git show [HASH], darcs log -v -h HASH)
alias pjshow='pj change'

# pjshowstat [HASH] - summarise the last or specified change
#   (like git show --stat [HASH], darcs log -s -h HASH)
# shellcheck disable=SC2086
pjshowstat() { pj change $1 | grep -E '^(message =|[0-9])'; }

# ** Show unrecorded changes

# pjs - summarise unrecorded changes (except added files), -u for untracked files
#   pijul diff -s (like git status -s, darcs whatsnew -s)
alias pjs='pj diff -s'

# pjd - show unrecorded changes in full (except added files)
#   pijul diff (like git diff, darcs whatsnew)
alias pjd='pj diff'

# ** Record changes

# pjrec 'MSG' [PATHS] - record all unrecorded changes, with the given message
#   pijul record -am 'MSG' (like git commit -am 'MSG', darcs record -am 'MSG')
alias pjrec='pj record -a -m'

# pjamend [HASH] [PATHS] - add all unrecorded changes to last or specified patch
#   pijul record -a --amend [HASH] (like git commit --amend -a, darcs amend -a)
alias pjamend='pj record -a --amend'