diff --git a/.github/workflows/check-linux.yml b/.github/workflows/check-linux.yml index a7c894d..12b3765 100644 --- a/.github/workflows/check-linux.yml +++ b/.github/workflows/check-linux.yml @@ -1,5 +1,5 @@ --- -name: ๐Ÿง Check (Linux) +name: Check (Linux) on: push: branches: [main] @@ -30,7 +30,7 @@ jobs: timeout-minutes: 10 steps: - name: โคต๏ธ Check out code from GitHub - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: โ˜‘๏ธ ShellCheck uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0 with: @@ -42,7 +42,7 @@ jobs: needs: [shellcheck] steps: - name: โคต๏ธ Check out code from GitHub - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: โš™๏ธ Prepare dependencies run: | sudo apt-get update diff --git a/.github/workflows/check-macos.yml b/.github/workflows/check-macos.yml index cadf6da..ab2189a 100644 --- a/.github/workflows/check-macos.yml +++ b/.github/workflows/check-macos.yml @@ -1,5 +1,5 @@ --- -name: ๐ŸŽ Check (MacOS) +name: Check (macOS) on: push: @@ -31,7 +31,7 @@ jobs: timeout-minutes: 10 steps: - name: โคต๏ธ Check out code from GitHub - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: โ˜‘๏ธ ShellCheck uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0 with: @@ -43,7 +43,7 @@ jobs: needs: [shellcheck] steps: - name: โคต๏ธ Check out code from GitHub - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: โš™๏ธ Prepare dependencies run: | brew install zsh diff --git a/.github/workflows/checksum.yml b/.github/workflows/checksum.yml index 855f75b..500f336 100644 --- a/.github/workflows/checksum.yml +++ b/.github/workflows/checksum.yml @@ -1,5 +1,5 @@ --- -name: "๐Ÿ†— Checksum" +name: Checksum on: push: paths: @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: "๐Ÿ†— Generate checksum" uses: jmgilman/actions-generate-checksum@3ea6dc9bf8eecf28e2ecc982fab683484a1a8561 # v1.0.1 with: diff --git a/.github/workflows/deploy-gh-pages.yml b/.github/workflows/deploy-gh-pages.yml index 8030c02..c071212 100644 --- a/.github/workflows/deploy-gh-pages.yml +++ b/.github/workflows/deploy-gh-pages.yml @@ -1,5 +1,5 @@ --- -name: "๐Ÿš€ GitHub Pages" +name: GitHub Pages on: workflow_dispatch: @@ -26,7 +26,7 @@ jobs: timeout-minutes: 15 steps: - name: โคต๏ธ Check out code from GitHub - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: "๐Ÿท Prepare deployment metadata" id: prepare_deploy run: | diff --git a/.github/workflows/rclone-action.yml b/.github/workflows/rclone-action.yml index f17371a..c1ba54a 100644 --- a/.github/workflows/rclone-action.yml +++ b/.github/workflows/rclone-action.yml @@ -1,5 +1,5 @@ --- -name: "๐Ÿ”„ Rclone" +name: Rclone on: push: branches: [gh-pages] @@ -22,7 +22,7 @@ jobs: remote_path: "r2:r2-store/src" steps: - name: "โคต๏ธ Check out code from GitHub" - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: "โซ Run rclone/r2-store" uses: z-shell/.github/actions/rclone@3222f53692e448ed6e2caf8b8722e74fb2ca2461 # v1.1.1 with: diff --git a/.github/workflows/win-install.yml b/.github/workflows/win-install.yml index 3d8ec1b..b9c9504 100644 --- a/.github/workflows/win-install.yml +++ b/.github/workflows/win-install.yml @@ -1,5 +1,5 @@ --- -name: โš™๏ธ Windows Install +name: Windows Install on: pull_request: @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: โ˜‘๏ธ ShellCheck uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38 # 2.0.0 with: @@ -42,7 +42,7 @@ jobs: run: | git config --global core.autocrlf input git config --global --add safe.directory /cygdrive/d/a/src/src - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: ๐ŸชŸ Dependencies (Windows) uses: egor-tensin/setup-cygwin@fca9069f92361187d4abfaa5d8a7490e435d8349 # v4.0.2 with: diff --git a/public/checksum.txt b/public/checksum.txt index 22dce7f..d85758a 100644 --- a/public/checksum.txt +++ b/public/checksum.txt @@ -1,4 +1,4 @@ -348b78e992d28ecebd23940d06944629ef7f8f9d93c17ef3469cd6eebd288451 public/sh/install_zpmod.sh -7408a1045f330a6e73bda55c6c7b48be7873a4e7f1fb00d7db989827cc9224a9 public/sh/install.sh -f8519bf7e3e42ad67cc9cff6d82a8367641611fc687b2f6793e26bd55dbbb553 public/sh/sync-init.sh -98f54a779985719e390b3e4559b7b0ac22101caac91d0569d41cd9229a05c6de public/zsh/init.zsh +0140801e80b2d8767e95d215850b6feab3642ee2b6fd70fbf4aab09afcfe7fca public/sh/install_zpmod.sh +0cca0bb9f95101b4bf392d6aa3c23123602d99a7cbb0decacaa72973e016d89d public/sh/install.sh +08cc893ceb982fc99d17db1966c6c30790cc571e16e4f5392352d995f5252952 public/sh/sync-init.sh +5c7af31d7fc848d80f9fedf69c75e6844503f550a3d5e020bc7cdfdaca624763 public/zsh/init.zsh diff --git a/public/sh/install.sh b/public/sh/install.sh index 694ceed..1eeccc7 100755 --- a/public/sh/install.sh +++ b/public/sh/install.sh @@ -4,7 +4,7 @@ set -eu -WORKDIR="$(mktemp -d)" || exit 1 +WORKDIR="$(mktemp -d "${TMPDIR:-/tmp}/zi-install.XXXXXX")" || exit 1 trap 'rm -rf "${WORKDIR:?}"' EXIT INT TERM ZOPT="" AOPT="" diff --git a/public/sh/install_zpmod.sh b/public/sh/install_zpmod.sh index 9bc9ed9..9cda7df 100755 --- a/public/sh/install_zpmod.sh +++ b/public/sh/install_zpmod.sh @@ -4,7 +4,7 @@ set -eu -WORKDIR="$(mktemp -d)" || exit 1 +WORKDIR="$(mktemp -d "${TMPDIR:-/tmp}/zi-zpmod.XXXXXX")" || exit 1 trap 'rm -rf "${WORKDIR:?}"' EXIT INT TERM # Returns 0 if version $1 >= version $2 (dot-separated integers) diff --git a/public/sh/sync-init.sh b/public/sh/sync-init.sh index fe19ec6..77e2e48 100755 --- a/public/sh/sync-init.sh +++ b/public/sh/sync-init.sh @@ -22,7 +22,7 @@ set -eu -WORKDIR="$(mktemp -d)" || exit 1 +WORKDIR="$(mktemp -d "${TMPDIR:-/tmp}/zi-sync.XXXXXX")" || exit 1 trap 'rm -rf "${WORKDIR:?}"' EXIT INT TERM SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" @@ -70,7 +70,7 @@ _fetch_url() { elif command -v wget >/dev/null 2>&1; then command wget -qO- "${_url}" else - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m No curl or wget available." >&2 + printf '%b\n' "โ–“โ–’โ–‘ No curl or wget available." >&2 return 1 fi } @@ -114,14 +114,14 @@ _fetch() { return 0 fi fi - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Failed to fetch: ${_src}" >&2 + printf '%b\n' "โ–“โ–’โ–‘ Failed to fetch: ${_src}" >&2 return 1 ;; *) if [ -r "${_src}" ]; then command cat "${_src}" else - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Cannot read local path: ${_src}" >&2 + printf '%b\n' "โ–“โ–’โ–‘ Cannot read local path: ${_src}" >&2 return 1 fi ;; @@ -136,7 +136,7 @@ _sha256() { elif command -v shasum >/dev/null 2>&1; then shasum -a 256 "${_file}" | command awk '{print $1}' else - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m No sha256sum or shasum available." >&2 + printf '%b\n' "โ–“โ–’โ–‘ No sha256sum or shasum available." >&2 return 1 fi } @@ -191,8 +191,8 @@ done # โ”€โ”€ Validate Inputs โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ if [ ! -f "${OPT_LOCAL}" ] && [ "${OPT_WRITE}" -eq 0 ]; then - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Local file not found: ${OPT_LOCAL}" >&2 - printf '%s\n' "[1;33mโ–“โ–’โ–‘[0m Use --write to create it from remote." >&2 + printf '%b\n' "โ–“โ–’โ–‘ Local file not found: ${OPT_LOCAL}" >&2 + printf '%b\n' "โ–“โ–’โ–‘ Use --write to create it from remote." >&2 exit 1 fi @@ -202,7 +202,7 @@ REMOTE_FILE="${WORKDIR}/remote-init.zsh" printf '%s\n' "โ–“โ–’โ–‘ Fetching remote: ${OPT_REMOTE}" # shellcheck disable=SC2310 if ! _fetch "${OPT_REMOTE}" >"${REMOTE_FILE}"; then - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Failed to fetch remote file." >&2 + printf '%b\n' "โ–“โ–’โ–‘ Failed to fetch remote file." >&2 exit 1 fi @@ -213,19 +213,19 @@ if [ "${OPT_NO_CHECKSUM}" -eq 0 ]; then printf '%s\n' "โ–“โ–’โ–‘ Fetching checksum: ${OPT_CHECKSUM_URL}" # shellcheck disable=SC2310 if ! _fetch "${OPT_CHECKSUM_URL}" >"${CHECKSUM_FILE}"; then - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Failed to fetch checksum file." >&2 + printf '%b\n' "โ–“โ–’โ–‘ Failed to fetch checksum file." >&2 exit 1 fi EXPECTED_HASH="$(grep "${CHECKSUM_KEY}" "${CHECKSUM_FILE}" | command awk '{print $1}')" if [ -z "${EXPECTED_HASH}" ]; then - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m No checksum entry for '${CHECKSUM_KEY}' in checksum.txt." >&2 + printf '%b\n' "โ–“โ–’โ–‘ No checksum entry for '${CHECKSUM_KEY}' in checksum.txt." >&2 exit 1 fi REMOTE_HASH="$(_sha256 "${REMOTE_FILE}")" if [ "${REMOTE_HASH}" != "${EXPECTED_HASH}" ]; then - printf '%s\n' "[1;31mโ–“โ–’โ–‘[0m Remote checksum mismatch!" >&2 + printf '%b\n' "โ–“โ–’โ–‘ Remote checksum mismatch!" >&2 printf '%s\n' " expected : ${EXPECTED_HASH}" >&2 printf '%s\n' " got : ${REMOTE_HASH}" >&2 exit 1 @@ -245,13 +245,13 @@ else fi if [ "${LOCAL_HASH}" = "${REMOTE_HASH}" ]; then - printf '%s\n' "[1;32mโ–“โ–’โ–‘[0m Local file matches remote. No sync needed." + printf '%b\n' "โ–“โ–’โ–‘ Local file matches remote. No sync needed." printf '%s\n' " hash : ${LOCAL_HASH}" printf '%s\n' " path : ${OPT_LOCAL}" exit 0 fi -printf '%s\n' "[1;33mโ–“โ–’โ–‘[0m Local and remote differ." +printf '%b\n' "โ–“โ–’โ–‘ Local and remote differ." printf '%s\n' " local : ${LOCAL_HASH}" printf '%s\n' " remote : ${REMOTE_HASH}" printf '%s\n' " source : ${OPT_REMOTE}" @@ -286,7 +286,7 @@ fi command mv "${TMP_TARGET}" "${OPT_LOCAL}" NEW_HASH="$(_sha256 "${OPT_LOCAL}")" -printf '%s\n' "[1;32mโ–“โ–’โ–‘[0m Sync complete." +printf '%b\n' "โ–“โ–’โ–‘ Sync complete." printf '%s\n' " before : ${LOCAL_HASH}" printf '%s\n' " after : ${NEW_HASH}" printf '%s\n' " path : ${OPT_LOCAL}" diff --git a/public/zsh/init.zsh b/public/zsh/init.zsh index ad19e78..74544ef 100755 --- a/public/zsh/init.zsh +++ b/public/zsh/init.zsh @@ -119,8 +119,8 @@ _zi_pmod() { # Register Zi completion if the completion system is active. _zi_comps() { builtin emulate -L zsh - if (( ${+_comps} )) && [[ -f "${ZI[BIN_DIR]}/lib/_zi" ]]; then - (( ${+_comps[zi]} )) || _comps[zi]="${ZI[BIN_DIR]}/lib/_zi" + if (( ${+_comps} )); then + (( ${+_comps[zi]} )) || _comps[zi]=_zi fi return 0 } diff --git a/public/zsh/snippets/color.zsh b/public/zsh/snippets/color.zsh index 7ca8eca..153482c 100644 --- a/public/zsh/snippets/color.zsh +++ b/public/zsh/snippets/color.zsh @@ -3,8 +3,6 @@ # Source: https://github.com/molovo/color # License: MIT โ€” Copyright (c) 2015 Joe Letchford # Maintained by z-shell/src โ€” https://github.com/z-shell/src -# -#!/usr/bin/env zsh function color() { local color=$1 style=$2 b=0 diff --git a/public/zsh/snippets/revolver b/public/zsh/snippets/revolver index 37b0a3d..bcf11ff 100644 --- a/public/zsh/snippets/revolver +++ b/public/zsh/snippets/revolver @@ -1,8 +1,8 @@ #!/usr/bin/env zsh + # Source: https://github.com/molovo/revolver # License: MIT โ€” Copyright (c) 2016 Joe Letchford # Maintained by z-shell/src โ€” https://github.com/z-shell/src -# local -A _revolver_spinners _revolver_spinners=( @@ -79,7 +79,7 @@ function _revolver_usage() { echo " start Start the spinner" echo " update Update the message" echo " stop Stop the spinner" - echo " demo Display an demo of each style" + echo " demo Display a demo of each style" } ### @@ -88,6 +88,10 @@ function _revolver_usage() { function _revolver_process() { local dir statefile state msg pid="$1" spinner_index=0 + if [[ -z $pid || $pid != <-> ]]; then + exit 1 + fi + # Find the directory and load the statefile dir=${REVOLVER_DIR:-"${ZDOTDIR:-$HOME}/.revolver"} statefile="$dir/$pid" @@ -107,11 +111,9 @@ function _revolver_process() { fi # Check for the existence of the parent process - $(kill -s 0 $pid 2&>/dev/null) - - # If process doesn't exist, exit the script - # to prevent it from being orphaned - if [[ $? -ne 0 ]]; then + # and exit if process doesn't exist to prevent + # the spinner from being orphaned + if ! kill -s 0 "$pid" 2>/dev/null; then exit 1 fi diff --git a/scripts/repos.txt b/scripts/repos.txt deleted file mode 100644 index 2aacb30..0000000 --- a/scripts/repos.txt +++ /dev/null @@ -1,94 +0,0 @@ -F-Sy-H -z-a-bin-gem-node -z-a-patch-dl -z-a-readurl -z-a-rust -z-a-submods -z-a-meta-plugins -zsh-navigation-tools -declare-zsh -zsh-unique-id -zsh-diff-so-fancy -zflai -null -zconvey -zui -z-a-man -zsh -z-a-unscope -z-a-default-ice -zi-crasis -zi-vim-syntax -zsh-lint -zsh-github-issues -zzcomplete -zbrowse -firefox-dev -any-node -any-gem -apr -doctoc -asciidoctor -ecs-cli -fzf -fzy -github-issues-srv -github-issues -ls_colors -pyenv -z-a-test -z-a-linkbin -z-a-eval -dircolors-material -zi-rbenv -ztrace -zsnapshot -zsh-select -zsh-morpho -zsh-log-lines -zservice-py3http -zsh-editing-workbench -pm-perf-test -system-completions -subversion -remark -community -zsh-tig-plugin -zsh-string-lib -zsh-util-lib -zsh-cmd-architect -zredis-cmd -zredis -zprompts -zi-console -playground -zgdbm -redis -VATS -zi -H-S-MW -src -zsh-bin -docs -zsdoc -vramsteg-zsh -zd -status -.github -z-shell.github.io -zpmod -zsh-eza -brew-completions -0 -wiki -zsh-zoxide -zsh-fancy-completions -web -zsh-web-artwork -merch -nb -.github-private -z-a-linkman -zsh-lsd -.trunk -zunit diff --git a/scripts/sync-labels.sh b/scripts/sync-labels.sh deleted file mode 100755 index 95089c7..0000000 --- a/scripts/sync-labels.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env sh -# sync-labels.sh โ€” Apply canonical Z-Shell label set to org repos. -# -# Usage: -# ./sync-labels.sh [owner] [repos-file] -# -# Defaults: -# owner = z-shell -# repos-file = scripts/repos.txt (one repo name per line) -# -# Requirements: -# - gh CLI authenticated with repo scope -# - gh label create supports --force (gh >= 2.14) - -OWNER="${1:-z-shell}" -REPOS="${2:-$(dirname "$0")/repos.txt}" - -if [ ! -f "${REPOS}" ]; then - printf 'Error: repos file not found: %s\n' "${REPOS}" >&2 - exit 1 -fi - -apply_labels() { - repo="$1" - printf '=== %s/%s ===\n' "${OWNER}" "${repo}" - - # โ”€โ”€ Type labels โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - gh label create "bug ๐Ÿ›" --repo "${OWNER}/${repo}" --color d73a4a \ - --description "Something isn't working" --force - gh label create "feature-request ๐Ÿ’ก" --repo "${OWNER}/${repo}" --color 0075ca \ - --description "New feature or request" --force - gh label create "enhancement โœจ" --repo "${OWNER}/${repo}" --color a2eeef \ - --description "Improvement to existing functionality" --force - gh label create "documentation ๐Ÿ“" --repo "${OWNER}/${repo}" --color 0052cc \ - --description "Documentation-only changes" --force - gh label create "performance ๐Ÿš€" --repo "${OWNER}/${repo}" --color 006b75 \ - --description "Performance improvements" --force - gh label create "security ๐Ÿ›ก๏ธ" --repo "${OWNER}/${repo}" --color ee0701 \ - --description "Security vulnerability or hardening" --force - gh label create "breaking-change ๐Ÿ’ฅ" --repo "${OWNER}/${repo}" --color d93f0b \ - --description "Breaks backward compatibility" --force - gh label create "dependencies ๐Ÿ“ฆ" --repo "${OWNER}/${repo}" --color 0366d6 \ - --description "Dependency updates" --force - gh label create "chore ๐Ÿ”ง" --repo "${OWNER}/${repo}" --color c5def5 \ - --description "Routine maintenance, no behavior change" --force - gh label create "refactor โ™ป๏ธ" --repo "${OWNER}/${repo}" --color 5319e7 \ - --description "Code refactor, no behavior change" --force - gh label create "ci โš™๏ธ" --repo "${OWNER}/${repo}" --color 1d76db \ - --description "CI/CD pipeline changes" --force - - # โ”€โ”€ Status / workflow labels โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - gh label create "triage ๐Ÿ”" --repo "${OWNER}/${repo}" --color fbca04 \ - --description "Needs investigation before action" --force - gh label create "in-progress ๐Ÿšง" --repo "${OWNER}/${repo}" --color f9d0c4 \ - --description "Currently being worked on" --force - gh label create "blocked โ›”" --repo "${OWNER}/${repo}" --color e4e669 \ - --description "Blocked on external dependency/decision" --force - gh label create "stale ๐Ÿ’ค" --repo "${OWNER}/${repo}" --color f2f2f2 \ - --description "No activity for an extended period" --force - gh label create "invalid โš ๏ธ" --repo "${OWNER}/${repo}" --color e4e669 \ - --description "Off-topic, cannot reproduce, or incorrect" --force - gh label create "wontfix ๐Ÿšซ" --repo "${OWNER}/${repo}" --color ffffff \ - --description "Will not be fixed" --force - gh label create "no-stale ๐Ÿ”’" --repo "${OWNER}/${repo}" --color 0e8a16 \ - --description "Exempt from stale-bot closing" --force - - # โ”€โ”€ Community labels โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ - gh label create "help-wanted ๐Ÿ™‹" --repo "${OWNER}/${repo}" --color 008672 \ - --description "Extra attention or expertise needed" --force - gh label create "good-first-issue ๐ŸŒฑ" --repo "${OWNER}/${repo}" --color 7057ff \ - --description "Good for newcomers" --force - gh label create "Q&A โœ๏ธ" --repo "${OWNER}/${repo}" --color d4c5f9 \ - --description "Questions and answers" --force -} - -# โ”€โ”€ Main loop โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -total=0 -ok=0 -failed=0 - -while IFS= read -r repo || [ -n "${repo}" ]; do - [ -z "${repo}" ] && continue - total=$((total + 1)) - if apply_labels "${repo}"; then - ok=$((ok + 1)) - else - failed=$((failed + 1)) - printf 'FAILED: %s/%s\n' "${OWNER}" "${repo}" >&2 - fi -done <"${REPOS}" - -printf '\nDone โ€” %d total, %d ok, %d failed\n' "${total}" "${ok}" "${failed}" diff --git a/tests/installers.sh b/tests/installers.sh index 48aac94..2be2319 100755 --- a/tests/installers.sh +++ b/tests/installers.sh @@ -8,7 +8,7 @@ ROOT="$( unset CDPATH cd -- "$(dirname "$0")/.." && pwd )" -TMP_ROOT="$(mktemp -d)" || exit 1 +TMP_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/zi-test.XXXXXX")" || exit 1 trap 'rm -rf "${TMP_ROOT:?}"' EXIT INT TERM fail() {