Skip to content

Commit 3e2b0f9

Browse files
authored
feat: add grpc/status package (#95)
2 parents d49857b + ad9147c commit 3e2b0f9

File tree

10 files changed

+269
-79
lines changed

10 files changed

+269
-79
lines changed

.bin/direnv

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@ InstallProgram() {
2121
local prog_arch
2222
if [[ ${machine_arch:?} = x86_64 ]]; then
2323
prog_arch=amd64
24-
elif [[ ${machine_arch:?} = arm64 ]]; then
24+
elif [[ ${machine_arch:?} = arm64 ]] || [[ ${machine_arch:?} = aarch64 ]]; then
2525
prog_arch=arm64
2626
else
27-
RecCritical "arch (${machine_arch:?}) is not supported"
27+
LogshError "arch (${machine_arch:?}) is not supported"
2828
exit 1
2929
fi
3030
local download_url && download_url="${git_url_prefix:?}/releases/download/v${prog_version:?}/${exe_filename:?}.${prog_os:?}-${prog_arch:?}"
3131
local downloaded_path && downloaded_path=${prog_version_tmp_dir:?}/$(basename "${download_url:?}")
3232
# download
33-
RecNotice "Download ${download_url:?}"
33+
LogshNotice "Download ${download_url:?}"
3434
DownloadURL "${download_url:?}" "${downloaded_path:?}"
3535
# install
36-
RecNotice "Install ${downloaded_path:?} to ${prog_version_exe:?}"
37-
RecExec mv -f "${downloaded_path:?}" "${prog_version_exe:?}"
38-
RecExec chmod +x "${prog_version_exe:?}"
36+
LogshNotice "Install ${downloaded_path:?} to ${prog_version_exe:?}"
37+
LogshExec mv -f "${downloaded_path:?}" "${prog_version_exe:?}"
38+
LogshExec chmod +x "${prog_version_exe:?}"
3939
}
4040

4141
ExecProgram() {
@@ -48,34 +48,35 @@ ExecProgram() {
4848
exec "${prog_version_exe:?}" "$@" <&0
4949
}
5050

51-
# LISENCE: https://github.com/kunitsucom/rec.sh/blob/HEAD/LICENSE
51+
# LISENCE: https://github.com/kunitsucom/log.sh/blob/HEAD/LICENSE
5252
# Common
53-
if [ -t 2 ]; then REC_COLOR=true; else REC_COLOR=''; fi
54-
_recRFC3339() { date "+%Y-%m-%dT%H:%M:%S%z" | sed "s/\(..\)$/:\1/"; }
55-
_recCmd() { for a in "$@"; do if echo "${a:-}" | grep -Eq "[[:blank:]]"; then printf "'%s' " "${a:-}"; else printf "%s " "${a:-}"; fi; done | sed "s/ $//"; }
53+
if [ "${LOGSH_COLOR:-}" ] || [ -t 2 ] ; then LOGSH_COLOR=true; else LOGSH_COLOR=''; fi
54+
_logshRFC3339() { date "+%Y-%m-%dT%H:%M:%S%z" | sed "s/\(..\)$/:\1/"; }
55+
_logshCmd() { for a in "$@"; do if echo "${a:-}" | grep -Eq "[[:blank:]]"; then printf "'%s' " "${a:-}"; else printf "%s " "${a:-}"; fi; done | sed "s/ $//"; }
5656
# Color
57-
RecDefault() { test " ${REC_SEVERITY:-0}" -gt 000 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;35m} DEFAULT${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
58-
RecDebug() { test " ${REC_SEVERITY:-0}" -gt 100 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;34m} DEBUG${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
59-
RecInfo() { test " ${REC_SEVERITY:-0}" -gt 200 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;32m} INFO${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
60-
RecNotice() { test " ${REC_SEVERITY:-0}" -gt 300 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;36m} NOTICE${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
61-
RecWarning() { test " ${REC_SEVERITY:-0}" -gt 400 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;33m} WARNING${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
62-
RecError() { test " ${REC_SEVERITY:-0}" -gt 500 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;31m} ERROR${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
63-
RecCritical() { test " ${REC_SEVERITY:-0}" -gt 600 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;1;31m} CRITICAL${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
64-
RecAlert() { test " ${REC_SEVERITY:-0}" -gt 700 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;41m} ALERT${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
65-
RecEmergency() { test "${REC_SEVERITY:-0}" -gt 800 2>/dev/null || echo "$*" | awk "{print \"$(_recRFC3339) [${REC_COLOR:+\\033[0;1;41m}EMERGENCY${REC_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
66-
RecExec() { RecInfo "$ $(_recCmd "$@")" && "$@"; }
67-
RecRun() { _dlm="####R#E#C#D#E#L#I#M#I#T#E#R####" && _all=$({ _out=$("$@") && _rtn=$? || _rtn=$? && printf "\n%s" "${_dlm:?}${_out:-}" && return "${_rtn:-0}"; } 2>&1) && _rtn=$? || _rtn=$? && _dlmno=$(echo "${_all:-}" | sed -n "/${_dlm:?}/=") && _cmd=$(_recCmd "$@") && _stdout=$(echo "${_all:-}" | tail -n +"${_dlmno:-1}" | sed "s/^${_dlm:?}//") && _stderr=$(echo "${_all:-}" | head -n "${_dlmno:-1}" | grep -v "^${_dlm:?}") && RecInfo "$ ${_cmd:-}" && { [ -z "${_stdout:-}" ] || RecInfo "${_stdout:?}"; } && { [ -z "${_stderr:-}" ] || RecWarning "${_stderr:?}"; } && return "${_rtn:-0}"; }
57+
LogshDefault() { test " ${LOGSH_LEVEL:-0}" -gt 000 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;35m} DEFAULT${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
58+
LogshDebug() { test " ${LOGSH_LEVEL:-0}" -gt 100 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;34m} DEBUG${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
59+
LogshInfo() { test " ${LOGSH_LEVEL:-0}" -gt 200 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;32m} INFO${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
60+
LogshNotice() { test " ${LOGSH_LEVEL:-0}" -gt 300 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;36m} NOTICE${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
61+
LogshWarn() { test " ${LOGSH_LEVEL:-0}" -gt 400 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;33m} WARN${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
62+
LogshWarning() { test " ${LOGSH_LEVEL:-0}" -gt 400 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;33m} WARNING${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
63+
LogshError() { test " ${LOGSH_LEVEL:-0}" -gt 500 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;31m} ERROR${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
64+
LogshCritical() { test " ${LOGSH_LEVEL:-0}" -gt 600 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;1;31m} CRITICAL${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
65+
LogshAlert() { test " ${LOGSH_LEVEL:-0}" -gt 700 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;41m} ALERT${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
66+
LogshEmergency() { test "${LOGSH_LEVEL:-0}" -gt 800 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;1;41m}EMERGENCY${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
67+
LogshExec() { LogshInfo "$ $(_logshCmd "$@")" && "$@"; }
68+
LogshRun() { _dlm="####R#E#C#D#E#L#I#M#I#T#E#R####" && _all=$({ _out=$("$@") && _rtn=$? || _rtn=$? && printf "\n%s" "${_dlm:?}${_out:-}" && return "${_rtn:-0}"; } 2>&1) && _rtn=$? || _rtn=$? && _dlmno=$(echo "${_all:-}" | sed -n "/${_dlm:?}/=") && _cmd=$(_logshCmd "$@") && _stdout=$(echo "${_all:-}" | tail -n +"${_dlmno:-1}" | sed "s/^${_dlm:?}//") && _stderr=$(echo "${_all:-}" | head -n "${_dlmno:-1}" | grep -v "^${_dlm:?}") && LogshInfo "$ ${_cmd:-}" && LogshInfo "${_stdout:-}" && { [ -z "${_stderr:-}" ] || LogshWarning "${_stderr:?}"; } && return "${_rtn:-0}"; }
6869

6970
# versenv common
7071
DownloadURL() {
7172
local url="${1:?}"
7273
local file="${2:?}"
7374
if command -v curl >/dev/null; then
74-
RecExec curl --tlsv1.2 --connect-timeout 2 --progress-bar -fLR "${url:?}" -o "${file:?}"
75+
LogshExec curl --tlsv1.2 --connect-timeout 2 --progress-bar -fLR "${url:?}" -o "${file:?}"
7576
elif command -v wget >/dev/null; then
76-
RecExec wget --secure-protocol=TLSv1_2 --dns-timeout=2 --connect-timeout=2 -q "${url:?}" -O "${file:?}"
77+
LogshExec wget --secure-protocol=TLSv1_2 --dns-timeout=2 --connect-timeout=2 -q "${url:?}" -O "${file:?}"
7778
else
78-
RecCritical "command not found: curl or wget"
79+
LogshError "command not found: curl or wget"
7980
exit 127
8081
fi
8182
}
@@ -88,7 +89,7 @@ GetURLs() {
8889
elif command -v curl >/dev/null; then
8990
curl --tlsv1.2 --connect-timeout 2 -fLRSs "${url:?}"
9091
else
91-
RecCritical "command not found: curl or wget"
92+
LogshError "command not found: curl or wget"
9293
exit 127
9394
fi
9495
done
@@ -101,7 +102,7 @@ HeadURL() {
101102
elif command -v curl >/dev/null; then
102103
curl --tlsv1.2 --connect-timeout 2 -fIRSs "${url:?}"
103104
else
104-
RecCritical "command not found: curl or wget"
105+
LogshError "command not found: curl or wget"
105106
exit 127
106107
fi
107108
}
@@ -112,16 +113,16 @@ SubcommandSelfUpdate() {
112113
local tmp_dir=/tmp/versenv/bin
113114
local tmp_file=${tmp_dir:?}/${exe_filename:?}
114115
local backup_file="${tmp_file:?}.backup"
115-
RecNotice "Download ${self_update_url:?}"
116+
LogshNotice "Download ${self_update_url:?}"
116117
mkdir -p "${tmp_dir:?}"
117118
DownloadURL "${self_update_url:?}" "${tmp_file:?}"
118-
RecNotice "Take backup ${script_file_path:?} to ${backup_file:?}"
119-
RecExec mv -f "${script_file_path:?}" "${backup_file:?}"
120-
RecNotice "Show the changes between old and new"
121-
RecExec diff -u "${backup_file:?}" "${tmp_file:?}" || true
122-
RecNotice "Update ${script_file_path:?} to ${self_update_url:?}"
123-
RecExec chmod +x "${tmp_file:?}"
124-
RecExec mv -f "${tmp_file:?}" "${script_file_path:?}"
119+
LogshNotice "Take backup ${script_file_path:?} to ${backup_file:?}"
120+
LogshExec mv -f "${script_file_path:?}" "${backup_file:?}"
121+
LogshNotice "Show the changes between old and new"
122+
LogshExec diff -u "${backup_file:?}" "${tmp_file:?}" || true
123+
LogshNotice "Update ${script_file_path:?} to ${self_update_url:?}"
124+
LogshExec chmod +x "${tmp_file:?}"
125+
LogshExec mv -f "${tmp_file:?}" "${script_file_path:?}"
125126
}
126127

127128
MustFoundCommands() {
@@ -136,7 +137,7 @@ MustFoundCommands() {
136137
if [[ "${#not_found_commands[@]}" -eq 0 ]]; then
137138
return
138139
fi
139-
RecCritical "command not found: ${not_found_commands[*]}"
140+
LogshError "command not found: ${not_found_commands[*]}"
140141
exit 127
141142
}
142143

@@ -148,15 +149,15 @@ ResolveProgramVersion() {
148149
echo "${!env_key_version:?}"
149150
else
150151
ver=$(GetProgramLatestStableVersion)
151-
RecNotice "env ${env_key_version:?} is not set. Use latest stable version: ${env_key_version:?}=${ver:-"?"}"
152+
LogshNotice "env ${env_key_version:?} is not set. Use latest stable version: ${env_key_version:?}=${ver:-"?"}"
152153
echo "${ver:-}"
153154
fi
154155
)
155156
if [[ "${version:-}" ]]; then
156157
echo "${version:?}"
157158
return 0
158159
else
159-
RecCritical "Failed to resolve version"
160+
LogshError "Failed to resolve version"
160161
return 1
161162
fi
162163
}

.bin/git-tag-mod.sh

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
# shellcheck disable=SC2156
3+
set -Eeu -o pipefail
4+
5+
REPO_ROOT=$(git rev-parse --show-toplevel)
6+
7+
# LISENCE: https://github.com/kunitsucom/log.sh/blob/HEAD/LICENSE
8+
# Common
9+
if [ "${LOGSH_COLOR:-}" ] || [ -t 2 ]; then LOGSH_COLOR=true; else LOGSH_COLOR=''; fi
10+
_logshRFC3339() { date "+%Y-%m-%dT%H:%M:%S%z" | sed "s/\(..\)$/:\1/"; }
11+
_logshCmd() { for a in "$@"; do if echo "${a:-}" | grep -Eq "[[:blank:]]"; then printf "'%s' " "${a:-}"; else printf "%s " "${a:-}"; fi; done | sed "s/ $//"; }
12+
# Color
13+
LogshDefault() { test " ${LOGSH_LEVEL:-0}" -gt 000 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;35m} DEFAULT${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
14+
LogshDebug() { test " ${LOGSH_LEVEL:-0}" -gt 100 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;34m} DEBUG${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
15+
LogshInfo() { test " ${LOGSH_LEVEL:-0}" -gt 200 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;32m} INFO${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
16+
LogshNotice() { test " ${LOGSH_LEVEL:-0}" -gt 300 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;36m} NOTICE${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
17+
LogshWarn() { test " ${LOGSH_LEVEL:-0}" -gt 400 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;33m} WARN${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
18+
LogshWarning() { test " ${LOGSH_LEVEL:-0}" -gt 400 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;33m} WARNING${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
19+
LogshError() { test " ${LOGSH_LEVEL:-0}" -gt 500 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;31m} ERROR${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
20+
LogshCritical() { test " ${LOGSH_LEVEL:-0}" -gt 600 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;1;31m} CRITICAL${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
21+
LogshAlert() { test " ${LOGSH_LEVEL:-0}" -gt 700 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;41m} ALERT${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
22+
LogshEmergency() { test "${LOGSH_LEVEL:-0}" -gt 800 || echo "$*" | awk "{print \"$(_logshRFC3339) [${LOGSH_COLOR:+\\033[0;1;41m}EMERGENCY${LOGSH_COLOR:+\\033[0m}] \"\$0\"\"}" 1>&2; }
23+
LogshExec() { LogshInfo "$ $(_logshCmd "$@")" && "$@"; }
24+
LogshRun() { _dlm="####R#E#C#D#E#L#I#M#I#T#E#R####" && _all=$({ _out=$("$@") && _rtn=$? || _rtn=$? && printf "\n%s" "${_dlm:?}${_out:-}" && return "${_rtn:-0}"; } 2>&1) && _rtn=$? || _rtn=$? && _dlmno=$(echo "${_all:-}" | sed -n "/${_dlm:?}/=") && _cmd=$(_logshCmd "$@") && _stdout=$(echo "${_all:-}" | tail -n +"${_dlmno:-1}" | sed "s/^${_dlm:?}//") && _stderr=$(echo "${_all:-}" | head -n "${_dlmno:-1}" | grep -v "^${_dlm:?}") && LogshInfo "$ ${_cmd:-}" && LogshInfo "${_stdout:-}" && { [ -z "${_stderr:-}" ] || LogshWarning "${_stderr:?}"; } && return "${_rtn:-0}"; }
25+
26+
__main__() {
27+
cd "${REPO_ROOT:?}" || return $? # cd repo root
28+
29+
trap "git switch -" EXIT
30+
31+
latest_git_tag=$(git tag --sort v:refname | tail -n 1)
32+
latest_git_tag_commit=$(git rev-list -n 1 "${latest_git_tag:?}")
33+
34+
git switch --detach "${latest_git_tag:?}"
35+
targets=$(
36+
find "${REPO_ROOT:?}" -name go.mod -print | # find go.mod
37+
sed "s@${REPO_ROOT:?}/@@g" | # trim repo root path
38+
grep -v "^go\.mod$" | # ignore root go.mod
39+
grep -v "^tests/go\.mod$" | # ignore tests/go.mod
40+
sed "s@/go\.mod@@g" | # trim go.mod for extract module dir
41+
: || true
42+
)
43+
LogshInfo "$(printf "targets: %s" "${targets:-none}")"
44+
while read -r mod; do
45+
git tag -a "${mod:?}/${latest_git_tag:?}" -m "${mod:?}/${latest_git_tag:?}" "${latest_git_tag_commit:?}"
46+
done <<<"${targets:-}"
47+
}
48+
49+
__main__ "$@"

0 commit comments

Comments
 (0)