oh-my-devpod 0.15.2 → 0.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/runtime/VERSION +1 -1
- package/runtime/bin/omd +0 -0
- package/runtime/build/install-gitee-cli.sh +7 -1
- package/runtime/build/omd-brew-gateway.sh +10 -0
- package/runtime/build/omd-brew-provisioner.sh +6 -2
- package/runtime/install/bootstrap.sh +22 -0
- package/runtime/modules/lib/common.sh +11 -1
- package/runtime/modules/lib/postflight.sh +17 -14
package/package.json
CHANGED
package/runtime/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.15.
|
|
1
|
+
0.15.4
|
package/runtime/bin/omd
CHANGED
|
Binary file
|
|
@@ -8,6 +8,7 @@ bin_dir="${OHMYDEVPOD_BIN_DIR:-${HOME}/.local/bin}"
|
|
|
8
8
|
target_arch="${TARGETARCH:-}"
|
|
9
9
|
repo="oschina/gitee-cli"
|
|
10
10
|
staged_path=""
|
|
11
|
+
tar_version=""
|
|
11
12
|
|
|
12
13
|
fail() {
|
|
13
14
|
printf 'error: %s\n' "$*" >&2
|
|
@@ -110,7 +111,12 @@ actual_sha="$(sha256_file "${archive_path}")"
|
|
|
110
111
|
|
|
111
112
|
extract_dir="${tmp_dir}/extract"
|
|
112
113
|
mkdir -p "${extract_dir}"
|
|
113
|
-
|
|
114
|
+
tar_extract_args=(-xzf "${archive_path}" -C "${extract_dir}")
|
|
115
|
+
tar_version="$(tar --version 2>/dev/null || true)"
|
|
116
|
+
if [[ "${tar_version%%$'\n'*}" == *"GNU tar"* ]]; then
|
|
117
|
+
tar_extract_args=(--warning=no-unknown-keyword "${tar_extract_args[@]}")
|
|
118
|
+
fi
|
|
119
|
+
tar "${tar_extract_args[@]}" gitee ||
|
|
114
120
|
fail "failed to extract Gitee CLI binary"
|
|
115
121
|
[[ -f "${extract_dir}/gitee" && ! -L "${extract_dir}/gitee" ]] ||
|
|
116
122
|
fail "release archive does not contain a regular gitee binary"
|
|
@@ -247,6 +247,15 @@ run_real_brew() {
|
|
|
247
247
|
env -i "${clean_env[@]}" "${real_brew}" "$@"
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
prepare_backend_working_directory() {
|
|
251
|
+
local fallback="$1" current=""
|
|
252
|
+
current="$(pwd -P 2>/dev/null || true)"
|
|
253
|
+
if [[ -n "${current}" && -r "${current}" && -x "${current}" ]]; then
|
|
254
|
+
return 0
|
|
255
|
+
fi
|
|
256
|
+
cd -P "${fallback}" 2>/dev/null || fail "service home is not an accessible working directory"
|
|
257
|
+
}
|
|
258
|
+
|
|
250
259
|
run_backend() {
|
|
251
260
|
local home status mutates=0 before name value
|
|
252
261
|
if [[ "${1:-}" == "--omd-forwarded" ]]; then
|
|
@@ -281,6 +290,7 @@ run_backend() {
|
|
|
281
290
|
[[ "$(id -u)" == "$(manifest_value service_uid)" ]] || fail "backend must run as $(service_user)"
|
|
282
291
|
validate_inventory_records
|
|
283
292
|
home="$(service_home "$(service_user)")"
|
|
293
|
+
prepare_backend_working_directory "${home}"
|
|
284
294
|
before="${state_dir}/.inventory-before.$$"
|
|
285
295
|
if is_inventory_mutation "${1:-}"; then
|
|
286
296
|
mutates=1
|
|
@@ -377,8 +377,12 @@ install_policy() {
|
|
|
377
377
|
profile_tmp="${profile_file}.tmp.$$"
|
|
378
378
|
{
|
|
379
379
|
printf '%s\n' '# Generated by oh-my-devpod. Shared Linuxbrew gateway.'
|
|
380
|
-
printf 'case "
|
|
381
|
-
printf '%s\n'
|
|
380
|
+
printf '%s\n' 'case " $(id -nG 2>/dev/null) " in'
|
|
381
|
+
printf ' *" %s "*)\n' "${manager_group}"
|
|
382
|
+
printf ' PATH="%s:%s/bin:%s/sbin:$PATH"\n' "${libexec_dir}/bin" "${prefix}" "${prefix}"
|
|
383
|
+
printf '%s\n' ' export PATH'
|
|
384
|
+
printf '%s\n' ' ;;'
|
|
385
|
+
printf '%s\n' 'esac'
|
|
382
386
|
} > "${profile_tmp}"
|
|
383
387
|
chmod 0644 "${profile_tmp}"
|
|
384
388
|
if [[ "${test_mode}" != "1" ]]; then chown root:root "${profile_tmp}"; fi
|
|
@@ -237,6 +237,9 @@ omd_install_archive() {
|
|
|
237
237
|
omd_warn "Shared Linuxbrew activation failed; restored the previous omd release"
|
|
238
238
|
return 1
|
|
239
239
|
fi
|
|
240
|
+
if ! omd_repair_managed_login_shell_if_present "${release_dir}"; then
|
|
241
|
+
omd_warn "Updated omd, but could not repair the managed login shell; run omd to retry"
|
|
242
|
+
fi
|
|
240
243
|
[[ -z "${previous_dir}" ]] || rm -rf "${previous_dir}" || true
|
|
241
244
|
printf '%s\n' "${version}"
|
|
242
245
|
}
|
|
@@ -430,6 +433,25 @@ omd_activate_shared_linuxbrew_profile_if_present() {
|
|
|
430
433
|
bash -c 'set -euo pipefail; source "$1"; omd_shared_linuxbrew_activate_if_present "$2" "$3"' _ "${helper}" "${release_root}" "${profile}"
|
|
431
434
|
}
|
|
432
435
|
|
|
436
|
+
omd_repair_managed_login_shell_if_present() {
|
|
437
|
+
local release_root="$1" postflight managed_dir marker managed=0
|
|
438
|
+
managed_dir="${OHMYDEVPOD_MANAGED_DIR:-${OHMYDEVPOD_STATE_DIR:-${XDG_STATE_HOME:-${HOME}/.local/state}/oh-my-devpod}/managed}"
|
|
439
|
+
for marker in "${managed_dir}/zsh" "${managed_dir}/zsh-config"; do
|
|
440
|
+
if [[ -f "${marker}" && ! -L "${marker}" ]] &&
|
|
441
|
+
grep -Fqx 'managed_by=oh-my-devpod' "${marker}"; then
|
|
442
|
+
managed=1
|
|
443
|
+
break
|
|
444
|
+
fi
|
|
445
|
+
done
|
|
446
|
+
[[ "${managed}" == "1" ]] || return 0
|
|
447
|
+
postflight="${release_root}/modules/lib/postflight.sh"
|
|
448
|
+
[[ -f "${postflight}" && ! -L "${postflight}" ]] || {
|
|
449
|
+
omd_warn "Installed release cannot repair an existing managed login shell"
|
|
450
|
+
return 1
|
|
451
|
+
}
|
|
452
|
+
bash "${postflight}" repair-login-shell >&2
|
|
453
|
+
}
|
|
454
|
+
|
|
433
455
|
omd_activate_shared_linuxbrew_if_present() {
|
|
434
456
|
local release_root="$1" source="$2" profile
|
|
435
457
|
profile="$(omd_source_mirror_profile "${source}")" || return 1
|
|
@@ -448,6 +448,16 @@ omd_module_zsh_path() {
|
|
|
448
448
|
command -v zsh
|
|
449
449
|
}
|
|
450
450
|
|
|
451
|
+
omd_module_target_user() {
|
|
452
|
+
if [[ -n "${OHMYDEVPOD_TARGET_USER:-}" ]]; then
|
|
453
|
+
printf '%s\n' "${OHMYDEVPOD_TARGET_USER}"
|
|
454
|
+
elif [[ "$(id -u)" -eq 0 && -n "${SUDO_USER:-}" ]]; then
|
|
455
|
+
printf '%s\n' "${SUDO_USER}"
|
|
456
|
+
else
|
|
457
|
+
id -un
|
|
458
|
+
fi
|
|
459
|
+
}
|
|
460
|
+
|
|
451
461
|
omd_module_set_login_shell() {
|
|
452
462
|
local zsh_path="$1" target_user current_shell shells_file sudo_bin
|
|
453
463
|
[[ -x "${zsh_path}" ]] || {
|
|
@@ -455,7 +465,7 @@ omd_module_set_login_shell() {
|
|
|
455
465
|
return 1
|
|
456
466
|
}
|
|
457
467
|
|
|
458
|
-
target_user="$
|
|
468
|
+
target_user="$(omd_module_target_user)"
|
|
459
469
|
shells_file="${OHMYDEVPOD_SHELLS_FILE:-/etc/shells}"
|
|
460
470
|
sudo_bin="${OHMYDEVPOD_SUDO_BIN:-sudo}"
|
|
461
471
|
if [[ -n "${OHMYDEVPOD_CURRENT_SHELL:-}" ]]; then
|
|
@@ -5,23 +5,26 @@ source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"
|
|
|
5
5
|
# shellcheck source=source-config.sh
|
|
6
6
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/source-config.sh"
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
action="${1:-}"
|
|
9
|
+
case "${action}" in
|
|
10
|
+
install|update|repair-login-shell) ;;
|
|
10
11
|
*) omd_module_unknown_action "${1:-}" ;;
|
|
11
12
|
esac
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
if [[ "${action}" != "repair-login-shell" ]]; then
|
|
15
|
+
case "${OHMYDEVPOD_MIRROR_PROFILE:-upstream}" in
|
|
16
|
+
cn) source_name="gitee" ;;
|
|
17
|
+
upstream) source_name="github" ;;
|
|
18
|
+
*)
|
|
19
|
+
omd_module_info notice "unknown mirror profile; native source configuration was not changed"
|
|
20
|
+
source_name=""
|
|
21
|
+
;;
|
|
22
|
+
esac
|
|
23
|
+
if [[ -n "${source_name}" ]] &&
|
|
24
|
+
! omd_source_config_apply_transactional "${source_name}"; then
|
|
25
|
+
omd_module_info error "failed to apply native source configuration"
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
25
28
|
fi
|
|
26
29
|
|
|
27
30
|
if ! omd_module_is_managed zsh && ! omd_module_is_managed zsh-config; then
|