Add dev-mirror manager for npm, pip, cargo, go, gem, docker
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QKxGW1raAWaqeU8WdHsMsp
This commit is contained in:
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# omarchy:summary=Apply china or official registry profile to development tools
|
||||
# omarchy:args=<china|official> [--target npm,pip,cargo,go,gem,docker]
|
||||
# omarchy:examples=omarchycn dev-mirror apply china | omarchycn dev-mirror apply official --target npm,pip
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$OMARCHY_PATH/cn/lib/dev-mirror.sh"
|
||||
|
||||
profile="${1:?usage: omarchycn dev-mirror apply <china|official> [--target a,b]}"
|
||||
shift
|
||||
|
||||
if [[ $profile != "china" && $profile != "official" ]]; then
|
||||
echo "Unknown profile: $profile (expected china or official)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
targets=("${CN_DM_TARGETS[@]}")
|
||||
if [[ ${1:-} == "--target" ]]; then
|
||||
IFS=',' read -ra targets <<<"${2:?--target needs a comma-separated list}"
|
||||
fi
|
||||
|
||||
stamp=$(date +%Y%m%d-%H%M%S)
|
||||
|
||||
for target in "${targets[@]}"; do
|
||||
if [[ ! " ${CN_DM_TARGETS[*]} " == *" $target "* ]]; then
|
||||
echo "Unknown target: $target (known: ${CN_DM_TARGETS[*]})" >&2
|
||||
exit 1
|
||||
fi
|
||||
url=$(cn_dm_url "$target" "$profile")
|
||||
cn_dm_backup "$(cn_dm_config_file "$target")" "$stamp"
|
||||
"cn_dm_set_$target" "$url"
|
||||
echo "$target -> ${url:-<default>}"
|
||||
done
|
||||
|
||||
echo "Backups (if any): $CN_DM_BACKUP_ROOT/$stamp"
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
# omarchy:summary=Check reachability of each configured development registry
|
||||
# omarchy:examples=omarchycn dev-mirror doctor
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$OMARCHY_PATH/cn/lib/dev-mirror.sh"
|
||||
|
||||
failures=0
|
||||
|
||||
for target in "${CN_DM_TARGETS[@]}"; do
|
||||
current=$("cn_dm_get_$target")
|
||||
if [[ -z $current ]]; then
|
||||
echo "INFO $target: using tool default"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Reduce to a probe-able https URL
|
||||
probe="${current#sparse+}"
|
||||
probe="${probe%%,*}"
|
||||
if curl -sSf -o /dev/null -m 8 --connect-timeout 5 "$probe" 2>/dev/null; then
|
||||
echo "PASS $target: $current"
|
||||
elif curl -sS -o /dev/null -m 8 --connect-timeout 5 -w '%{http_code}' "$probe" 2>/dev/null | grep -qE '^[34]'; then
|
||||
# Registry roots often answer 3xx/404 to bare GET while the service works
|
||||
echo "PASS $target: $current"
|
||||
else
|
||||
echo "FAIL $target: $current unreachable"
|
||||
failures=$((failures + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
exit $((failures > 0 ? 1 : 0))
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
# omarchy:summary=Show configured registry for each development ecosystem
|
||||
# omarchy:examples=omarchycn dev-mirror list
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$OMARCHY_PATH/cn/lib/dev-mirror.sh"
|
||||
|
||||
printf '%-8s %-52s %s\n' "TARGET" "CURRENT" "CONFIG"
|
||||
|
||||
for target in "${CN_DM_TARGETS[@]}"; do
|
||||
current=$("cn_dm_get_$target")
|
||||
printf '%-8s %-52s %s\n' "$target" "${current:-<default>}" "$(cn_dm_config_file "$target")"
|
||||
done
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
# omarchy:summary=Point one development ecosystem at a custom registry URL
|
||||
# omarchy:args=<target> <url>
|
||||
# omarchy:examples=omarchycn dev-mirror set npm https://registry.example.com
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$OMARCHY_PATH/cn/lib/dev-mirror.sh"
|
||||
|
||||
target="${1:?usage: omarchycn dev-mirror set <target> <url>}"
|
||||
url="${2:?usage: omarchycn dev-mirror set <target> <url>}"
|
||||
|
||||
if [[ ! " ${CN_DM_TARGETS[*]} " == *" $target "* ]]; then
|
||||
echo "Unknown target: $target (known: ${CN_DM_TARGETS[*]})" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cn_dm_backup "$(cn_dm_config_file "$target")" "$(date +%Y%m%d-%H%M%S)"
|
||||
"cn_dm_set_$target" "$url"
|
||||
echo "$target -> $url"
|
||||
Reference in New Issue
Block a user