From 8497e08e5e11569e5c6fa903fc4ba8fa861c2ae8 Mon Sep 17 00:00:00 2001 From: Cy Pokhrel Date: Thu, 24 Oct 2024 22:47:30 -0400 Subject: [PATCH] update --- dot_zshrc | 145 ++++++++++++++++++ private_dot_config/nvim/lazy-lock.json | 10 +- private_dot_config/sway/config | 2 +- private_dot_config/tmux/tmux.conf | 1 - private_dot_ssh/encrypted_private_config.asc | 16 +- .../encrypted_private_known_hosts.asc | 90 +++++++---- 6 files changed, 219 insertions(+), 45 deletions(-) diff --git a/dot_zshrc b/dot_zshrc index 0bf8314..ec9b90f 100644 --- a/dot_zshrc +++ b/dot_zshrc @@ -89,3 +89,148 @@ export NVM_DIR="$HOME/.config/nvm" [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion source <(fzf --zsh) + +ghcs() { + FUNCNAME="$funcstack[1]" + TARGET="shell" + local GH_DEBUG="$GH_DEBUG" + local GH_HOST="$GH_HOST" + + read -r -d '' __USAGE <<-EOF + Wrapper around \`gh copilot suggest\` to suggest a command based on a natural language description of the desired output effort. + Supports executing suggested commands if applicable. + + USAGE + $FUNCNAME [flags] + + FLAGS + -d, --debug Enable debugging + -h, --help Display help usage + --hostname The GitHub host to use for authentication + -t, --target target Target for suggestion; must be shell, gh, git + default: "$TARGET" + + EXAMPLES + + - Guided experience + $ $FUNCNAME + + - Git use cases + $ $FUNCNAME -t git "Undo the most recent local commits" + $ $FUNCNAME -t git "Clean up local branches" + $ $FUNCNAME -t git "Setup LFS for images" + + - Working with the GitHub CLI in the terminal + $ $FUNCNAME -t gh "Create pull request" + $ $FUNCNAME -t gh "List pull requests waiting for my review" + $ $FUNCNAME -t gh "Summarize work I have done in issues and pull requests for promotion" + + - General use cases + $ $FUNCNAME "Kill processes holding onto deleted files" + $ $FUNCNAME "Test whether there are SSL/TLS issues with github.com" + $ $FUNCNAME "Convert SVG to PNG and resize" + $ $FUNCNAME "Convert MOV to animated PNG" + EOF + + local OPT OPTARG OPTIND + while getopts "dht:-:" OPT; do + if [ "$OPT" = "-" ]; then # long option: reformulate OPT and OPTARG + OPT="${OPTARG%%=*}" # extract long option name + OPTARG="${OPTARG#"$OPT"}" # extract long option argument (may be empty) + OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=` + fi + + case "$OPT" in + debug | d) + GH_DEBUG=api + ;; + + help | h) + echo "$__USAGE" + return 0 + ;; + + hostname) + GH_HOST="$OPTARG" + ;; + + target | t) + TARGET="$OPTARG" + ;; + esac + done + + # shift so that $@, $1, etc. refer to the non-option arguments + shift "$((OPTIND-1))" + + TMPFILE="$(mktemp -t gh-copilotXXXXXX)" + trap 'rm -f "$TMPFILE"' EXIT + if GH_DEBUG="$GH_DEBUG" GH_HOST="$GH_HOST" gh copilot suggest -t "$TARGET" "$@" --shell-out "$TMPFILE"; then + if [ -s "$TMPFILE" ]; then + FIXED_CMD="$(cat $TMPFILE)" + print -s "$FIXED_CMD" + echo + eval "$FIXED_CMD" + fi + else + return 1 + fi +} + +ghce() { + FUNCNAME="$funcstack[1]" + local GH_DEBUG="$GH_DEBUG" + local GH_HOST="$GH_HOST" + + read -r -d '' __USAGE <<-EOF + Wrapper around \`gh copilot explain\` to explain a given input command in natural language. + + USAGE + $FUNCNAME [flags] + + FLAGS + -d, --debug Enable debugging + -h, --help Display help usage + --hostname The GitHub host to use for authentication + + EXAMPLES + + # View disk usage, sorted by size + $ $FUNCNAME 'du -sh | sort -h' + + # View git repository history as text graphical representation + $ $FUNCNAME 'git log --oneline --graph --decorate --all' + + # Remove binary objects larger than 50 megabytes from git history + $ $FUNCNAME 'bfg --strip-blobs-bigger-than 50M' + EOF + + local OPT OPTARG OPTIND + while getopts "dh-:" OPT; do + if [ "$OPT" = "-" ]; then # long option: reformulate OPT and OPTARG + OPT="${OPTARG%%=*}" # extract long option name + OPTARG="${OPTARG#"$OPT"}" # extract long option argument (may be empty) + OPTARG="${OPTARG#=}" # if long option argument, remove assigning `=` + fi + + case "$OPT" in + debug | d) + GH_DEBUG=api + ;; + + help | h) + echo "$__USAGE" + return 0 + ;; + + hostname) + GH_HOST="$OPTARG" + ;; + esac + done + + # shift so that $@, $1, etc. refer to the non-option arguments + shift "$((OPTIND-1))" + + GH_DEBUG="$GH_DEBUG" GH_HOST="$GH_HOST" gh copilot explain "$@" +} diff --git a/private_dot_config/nvim/lazy-lock.json b/private_dot_config/nvim/lazy-lock.json index 26bea8d..2763b5f 100644 --- a/private_dot_config/nvim/lazy-lock.json +++ b/private_dot_config/nvim/lazy-lock.json @@ -6,17 +6,17 @@ "cmp-omni": { "branch": "main", "commit": "4ef610bbd85a5ee4e97e09450c0daecbdc60de86" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "dressing.nvim": { "branch": "master", "commit": "1b7921eecc65af1baf8ac1dc06f0794934cbcfb2" }, - "fzf-lua": { "branch": "main", "commit": "5dec364c9dedec00dcd6d06e323d7bc7f8d6b596" }, + "fzf-lua": { "branch": "main", "commit": "052491ee887b04e231787515a81aa3f358a68147" }, "gitsigns.nvim": { "branch": "main", "commit": "ee7634ab4f0a6606438fe13e16cbf2065589a5ed" }, "lazy.nvim": { "branch": "main", "commit": "cf8ecc2c5e4332760431a33534240b0cbc6680ab" }, "lualine.nvim": { "branch": "master", "commit": "b431d228b7bbcdaea818bdc3e25b8cdbe861f056" }, "nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" }, "nvim-cmp": { "branch": "main", "commit": "29fb4854573355792df9e156cb779f0d31308796" }, - "nvim-lspconfig": { "branch": "master", "commit": "0d62a16429dba5fded93a076237079b81527e8f3" }, - "nvim-tree.lua": { "branch": "master", "commit": "2a268f631da85e83b7a95291be589bcddfc785d8" }, - "nvim-treesitter": { "branch": "master", "commit": "bab7b0f20bd3e805b77231a77f516c7d69382693" }, + "nvim-lspconfig": { "branch": "master", "commit": "85afd4b936acd62b578c2e2d8e86541fb972c32e" }, + "nvim-tree.lua": { "branch": "master", "commit": "68be6df2fc7a1ca941b95e00ac37922b56130bfc" }, + "nvim-treesitter": { "branch": "master", "commit": "377039daa260b71f304c881d1b21d643c501a261" }, "nvim-web-devicons": { "branch": "master", "commit": "19d257cf889f79f4022163c3fbb5e08639077bd8" }, - "tokyonight.nvim": { "branch": "main", "commit": "4867d10ead04e69872b24818d0d306539305cf87" }, + "tokyonight.nvim": { "branch": "main", "commit": "2e1daa1d164ad8cc3e99b44ca68e990888a66038" }, "ultisnips": { "branch": "master", "commit": "49dc8cb2086db19d385791c8e1635723b0fd95c7" }, "vim-commentary": { "branch": "master", "commit": "64a654ef4a20db1727938338310209b6a63f60c9" }, "vim-snippets": { "branch": "master", "commit": "f0a3184d9f90b96b044d5914625a25c554d7f301" } diff --git a/private_dot_config/sway/config b/private_dot_config/sway/config index a3c8070..a7a2693 100644 --- a/private_dot_config/sway/config +++ b/private_dot_config/sway/config @@ -51,7 +51,7 @@ bindsym $mod+$alt+p exec pomatez bindsym $mod+$alt+y exec $youtube bindsym $mod+$alt+m exec $music bindsym $mod+$alt+r exec $rss -bindsym $mod+$alt+e exec kmail +bindsym $mod+$alt+e exec evolution bindsym $mod+$left focus left bindsym $mod+$down focus down diff --git a/private_dot_config/tmux/tmux.conf b/private_dot_config/tmux/tmux.conf index dbda54b..76073dc 100644 --- a/private_dot_config/tmux/tmux.conf +++ b/private_dot_config/tmux/tmux.conf @@ -1,4 +1,3 @@ -set -g default-terminal tmux-256color set -g set-titles on set -g mouse off diff --git a/private_dot_ssh/encrypted_private_config.asc b/private_dot_ssh/encrypted_private_config.asc index 2ef3653..df91547 100644 --- a/private_dot_ssh/encrypted_private_config.asc +++ b/private_dot_ssh/encrypted_private_config.asc @@ -1,11 +1,11 @@ -----BEGIN PGP MESSAGE----- -hF4DTouuqIuaNhASAQdAHpW7oJyEYKH7UdYaBAKxV8+u9vCDnXZ+WRA2V3lcxUUw -aqRgnYYndvQIUDVa5jxYSqdUfsB4ED1rrbIeLFBJ0VTVFNU1lhWPmkEmtZ0r2hAX -1MAiAQkCEKwTiIvBotvOssGu4TEs5Z6PzA+yzJXjeTWGwvmp4gVzUqnBLTO6/ZKh -UTjJv6g1EqhwozXPtBiILQT2GzEl40JhaZmvdhWEGIsKqlEHzgzGFpUJXDCDSu+1 -DHlIf94DwdsCx/RGu3PWlX9Q5lkOXqgoMtye7LFSUnG5uBLu4YFMSzvPEe0BY+uB -bGnpAL01pKVRnAKexskJ4rO6Br6s7+wdDoqWX6V74dJzsafaHdLI/uo1Khu/+9AK -PXFcg6ZMK5Mr19g5jEAYFak23c+z27+GAE3q1OnFP2JxENyRVQ== -=IqLm +hF4DTouuqIuaNhASAQdAm6gg7hHC4oJZ5caZXI20eV+oPkOc4t7I3J9Gl+8jpxQw +D+yEJ1XgHD67fjfKWZoN1Hy0GiKiPH8JmVyWOWdvwU7KaooHkpBfi5EBjXOA4Uvw +1MAqAQkCEFhTzNVIZGlDyscdM5UOYOftkclEdG9IHzSDZ7ySD8yFPvxMzH2nQFpp +wiyFDXNnGYpuwekxCogCPoWxkU1Gh/1iENH95Ag0O931FiGd7xvlUJL0Horedki1 +WS6880ceKYVm08o/ADl61uCmrIgmxeqRWOrOlR1gbWF8TpAghuIvIVbyt7Mwh6He +6BslRy23sue513j2zxrTujheMoRunMQhvEaIhB7MF99WYYXvb2IaXL0B+hycrA+n +RayrysIIXBAVAjX9xCtDqWv2te09po1Y6DSVjWJF6zF8OPY6NM9OHMbRCk0h +=Fc7b -----END PGP MESSAGE----- diff --git a/private_dot_ssh/encrypted_private_known_hosts.asc b/private_dot_ssh/encrypted_private_known_hosts.asc index 66b9365..8b69455 100644 --- a/private_dot_ssh/encrypted_private_known_hosts.asc +++ b/private_dot_ssh/encrypted_private_known_hosts.asc @@ -1,33 +1,63 @@ -----BEGIN PGP MESSAGE----- -hF4DTouuqIuaNhASAQdAKS7CgC8DjOi2cg0gi0k427Ev3SnK1mCAGnTAeTDzqzww -Bjvf4f+Iw3Umyl7/fWgBS5hYOOL9PRqWL5tjV7eFdNJO9iI3lx/vTjkSKPfvXqsk -1OoBCQIQgtzQe0hAZOnmeQUZWUHp0ifbqqRYKfb9PzaoBqAWRyOxO6OkX01lHVJL -mRzy49wuwfLbpKz2qsyFpaDoTHpqheykrq/Bs85/nr+2mz60E2mFCj6vR4IEDfBV -yIXOpJzWWzap72nMXRhdQzsqyIPqCeVxH5GCiT+PMxj+rIDU7IM+lWlYTOtd/Dot -SliMW1WIUaUXbXeRMEEHz24okbda/A6kCSD35puqPgG6Cuur3sjAJa1QfmewhDfk -ZRDlUYK9ypraD72jvMCo9ZdOIewCHCMlKaI+p9niYtV31Dlq0e0XOTGOawKs9XHH -OJECRXXa32ucwFBb+o/Kq5DPPdeEWPNuM8xyg50h81cGqbGIFdplv/4LUuAI6c54 -+/TqTuu3rBT54qgi5bR9AbwLcS88rfoJiahbvGAcQVB6imkh3ocMS36tzYd1r6gd -6fBmuA6B5pTyNVJ6b2IYTyIfbQ1d+gkBzq8gJoQ4UZB07f2cxFr01Xc2NWz3Lfba -kPqCmWNJItPawbzYvjPF28Du05mizjb5wrRD56+lBLkoVZYU39d3bMX7aqGxYOfp -3Y+yCLm/ISzUI/L2KmDI8O3RIn0IBSi1tylSf4/ZsRGW6Qaxfb2Cg6WfmLDDgGT4 -cFuBRSo4J1+YdWq5oOpA/T9CMxSBl2N4UKNxigXU79UjdXTxvg1Zrm2A+xVOPMmG -vD7Dyd+B3a8O7CNcRY0hTFOpWJ897OOxQHqFi0iBdL9lv1UHPT1TFuobPhvNW0dl -zKpLRzk6gy11vlFAfZbSx5m23j7EN4YGQUHB7CDbcdWOl88Uum0VZzfX8n80TD8z -9L5AdSzNGcppuWg9uNiG1Bd9boNI/BHAbMKGIL9FxGyMsq7xCckgGjgTo+RUKjIU -GMH9gahNg/ejFTw13JXm1fm64Mc/grsmnV7i1+dIMDmYvfJm/6p/4IYC3CXNQPD7 -t2zbynVgud6e1wYZotz8UqwZocMdEd+MpyeA30iQyH8LunxQ5r9MZ4V45hw0UVJr -64CzIw+0Pr82YOe8WACMyubogp9LnC1aUZZXVM7ZH2Bs4lCQXxsGYRZ4prg6/eVZ -KGTyRdDxdF3o8+ENEGOL034Cxi9Ew9o8IwFRoUxCjk5sYN5TZ028QpTcIsz1E+TU -954ctUuRAb+AnzM+NZbjW5mcevixSe5P3Zj938rHAze9o3Z3mi87kgivJmaah9dH -Xdyus+39ohZzKX+n6OWd0L5VHLIvtgiypqH098kxvSk8RSA0ROxMl+ARgk47/Mor -Hb2b9tp7y70/90kk5ed5TVWi7sPfKDI5ZjLYp7INs0zfidGFLOcmrmda2V/UvOX7 -8lt6R/wmMm2P4cR74LLc7Th1wDpXDxCjmmJQryM+hIYc+eQW1RhyzSSG81ehftOu -KjrUXHHzkDToSfhlSziF/Hw/P3WZV8BJUNjmq6tk6/W/xUS4UjLp9eRZLyTj6BE4 -3Rvt+PmkiWkmEARCCK9gTr9JBZ+AdqxV/rPLbvRttHy96kdN+Y1penM6KxJZ3OFU -xwnY6kPlISbSj19UNn7ytZW5Jk10RgrTrVtP2iM2eNDSRAKAhsGPML7/UA6XeywF -W3lDulCRWWoo0zVBoTNtvTblw2pgrDFotq2OPU6IPWKQlckrNib3vAj6ZugYCHs1 -GSbpQ+F40K49PDyml6txx/Y47Uz+nQ7vlckJ6BQB -=w0KD +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 +hMLiEOIoJj8Ug683ihCV0k0O +=9pO0 -----END PGP MESSAGE-----