From 330584fbbed302dbe5ac7103f744950040a64956 Mon Sep 17 00:00:00 2001 From: PHO Date: Sat, 20 Apr 2024 13:29:29 +0900 Subject: [PATCH 1/1] Initial commit --- Makefile | 10 ++++++++++ _pcd | 31 +++++++++++++++++++++++++++++++ pcd | 39 +++++++++++++++++++++++++++++++++++++++ psd | 39 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 Makefile create mode 100644 _pcd create mode 100644 pcd create mode 100644 psd diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4b27fa5 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +DESTDIR=${HOME}/.zfunc + +.PHONY: all +all: + +.PHONY: install +install: + for f in pcd psd _pcd; do \ + install -m 644 "$${f}" "${DESTDIR}/"; \ + done diff --git a/_pcd b/_pcd new file mode 100644 index 0000000..0831461 --- /dev/null +++ b/_pcd @@ -0,0 +1,31 @@ +#compdef pcd psd + +local pkgsrcdir +if [[ -n "${PKGSRCDIR}" ]]; then + pkgsrcdir="${PKGSRCDIR}" +else + local -a candidates=( + "/usr/pkgsrc" + "/opt/pkgsrc" + ) + + local dir + for dir in "${candidates[@]}"; do + if [[ -d "$dir" ]]; then + pkgsrcdir="$dir" + break + fi + done + + if [[ -z "$pkgsrcdir" ]]; then + echo >&2 "PKGSRCDIR not detected" + return 1 + fi +fi + +_arguments '1:directory:_files -/ -W '"$pkgsrcdir" + +# Local Variables: +# mode: sh +# sh-shell: zsh +# End: diff --git a/pcd b/pcd new file mode 100644 index 0000000..bfcb226 --- /dev/null +++ b/pcd @@ -0,0 +1,39 @@ +local pkgpath +if (( $# == 1 )); then + pkgpath="$1" +else + echo >&2 "Usage: $0 PATH" + echo >&2 + echo >&2 "pcd stands for \"pkgsrc cd\", alias to cd \${PKGSRCDIR}/\${PATH}" + return 1 +fi + +local pkgsrcdir +if [[ -n "${PKGSRCDIR}" ]]; then + pkgsrcdir="${PKGSRCDIR}" +else + local -a candidates=( + "/usr/pkgsrc" + "/opt/pkgsrc" + ) + + local dir + for dir in "${candidates[@]}"; do + if [[ -d "$dir" ]]; then + pkgsrcdir="$dir" + break + fi + done + + if [[ -z "$pkgsrcdir" ]]; then + echo >&2 "PKGSRCDIR not detected" + return 1 + fi +fi + +cd "${pkgsrcdir}/${pkgpath}" + +# Local Variables: +# mode: sh +# sh-shell: zsh +# End: diff --git a/psd b/psd new file mode 100644 index 0000000..8b0d783 --- /dev/null +++ b/psd @@ -0,0 +1,39 @@ +local pkgpath +if (( $# == 1 )); then + pkgpath="$1" +else + echo >&2 "Usage: $0 PATH" + echo >&2 + echo >&2 "psd stands for \"pkgsrc pushd\", alias to pushd \${PKGSRCDIR}/\${PATH}" + return 1 +fi + +local pkgsrcdir +if [[ -n "${PKGSRCDIR}" ]]; then + pkgsrcdir="${PKGSRCDIR}" +else + local -a candidates=( + "/usr/pkgsrc" + "/opt/pkgsrc" + ) + + local dir + for dir in "${candidates[@]}"; do + if [[ -d "$dir" ]]; then + pkgsrcdir="$dir" + break + fi + done + + if [[ -z "$pkgsrcdir" ]]; then + echo >&2 "PKGSRCDIR not detected" + return 1 + fi +fi + +pushd "${pkgsrcdir}/${pkgpath}" + +# Local Variables: +# mode: sh +# sh-shell: zsh +# End: -- 2.40.0