Skip to content

Commit 7d0b74f

Browse files
committed
fix(guide): resolve upgrade detection and platform issues
- Fix false "version unchanged" warning when tool already at target - Add is_wsl() helper to common.sh for platform detection - Docker: skip 20s WSL wait, start service manually (no systemd) - Ruby: update ruby-build definitions before installing new versions - Compose: add requires dependency on docker for proper ordering
1 parent 9951f35 commit 7d0b74f

5 files changed

Lines changed: 52 additions & 8 deletions

File tree

catalog/compose.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
"binary_name": "docker",
99
"plugin_name": "compose",
1010
"version_command": "docker compose version 2>&1 | head -1",
11+
"requires": ["docker"],
1112
"notes": "Docker Compose v2 is a plugin for Docker CLI. Can be installed separately as a plugin or bundled with Docker Desktop."
1213
}

scripts/guide.sh

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,13 @@ process_tool() {
237237

238238
# Check if upgrade succeeded by comparing versions
239239
local new_installed="$(json_field "$tool" installed)"
240-
if [ "$upgrade_success" = "0" ] || [ "$new_installed" = "$installed" ]; then
241-
# Upgrade failed or version didn't change
242-
printf "
243-
⚠️ Upgrade did not succeed (version unchanged)
244-
"
240+
if [ "$upgrade_success" = "0" ]; then
241+
# Install script failed
242+
printf "\n ⚠️ Upgrade failed (install script error)\n"
243+
prompt_pin_version "$tool" "$installed"
244+
elif [ "$new_installed" = "$installed" ] && [ "$new_installed" != "$latest" ]; then
245+
# Version didn't change and not at target
246+
printf "\n ⚠️ Upgrade did not succeed (version unchanged)\n"
245247
prompt_pin_version "$tool" "$installed"
246248
else
247249
# Upgrade succeeded - remove any existing pin to avoid stale pins
@@ -274,7 +276,10 @@ process_tool() {
274276

275277
# Check if upgrade succeeded
276278
local new_installed_a="$(json_field "$tool" installed)"
277-
if [ "$upgrade_success_a" = "0" ] || [ "$new_installed_a" = "$installed" ]; then
279+
if [ "$upgrade_success_a" = "0" ]; then
280+
printf "\n ⚠️ Upgrade failed (install script error)\n"
281+
printf " Auto-update is still enabled - will try again next time.\n"
282+
elif [ "$new_installed_a" = "$installed" ] && [ "$new_installed_a" != "$latest" ]; then
278283
printf "\n ⚠️ Upgrade did not succeed (version unchanged)\n"
279284
printf " Auto-update is still enabled - will try again next time.\n"
280285
else

scripts/install_docker.sh

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,22 @@ if have apt-get; then
1212
echo "[docker] current: $(before)"
1313
# Remove legacy docker.io if present
1414
apt_purge_if_present docker.io docker-doc docker-compose podman-docker containerd runc || true
15-
curl -fsSL https://get.docker.com | sh
15+
16+
if is_wsl; then
17+
echo "[docker] WSL detected - installing Docker Engine (skipping 20s wait)..."
18+
echo "[docker] Note: Docker Desktop for Windows is also available."
19+
echo "[docker] See: https://docs.docker.com/desktop/wsl/"
20+
# Download script and remove the sleep to skip 20-second wait
21+
curl -fsSL https://get.docker.com -o /tmp/get-docker.sh
22+
sed -i 's/sleep 20/sleep 0/' /tmp/get-docker.sh
23+
sudo sh /tmp/get-docker.sh
24+
rm -f /tmp/get-docker.sh
25+
# Start service manually (no systemd in WSL)
26+
sudo service docker start || echo "[docker] Run 'sudo service docker start' to start Docker"
27+
else
28+
curl -fsSL https://get.docker.com | sh
29+
fi
30+
1631
sudo usermod -aG docker "$USER" || true
1732
echo "[docker] updated: $(after)"
1833
exit 0

scripts/install_ruby.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ ACTION="${1:-reconcile}"
88
# Target Ruby version (default: latest stable)
99
RUBY_VERSION="${RUBY_VERSION:-3.3.6}"
1010

11+
update_ruby_build() {
12+
local ruby_build_dir="$HOME/.rbenv/plugins/ruby-build"
13+
if [ -d "$ruby_build_dir/.git" ]; then
14+
echo "[ruby] Updating ruby-build definitions..."
15+
git -C "$ruby_build_dir" pull --quiet || true
16+
fi
17+
}
18+
1119
ensure_rbenv() {
1220
if [ ! -d "$HOME/.rbenv" ]; then
1321
echo "Installing rbenv..."
@@ -19,6 +27,9 @@ ensure_rbenv() {
1927
if [ ! -d "$HOME/.rbenv/plugins/ruby-build" ]; then
2028
echo "Installing ruby-build plugin..."
2129
git clone https://github.com/rbenv/ruby-build.git "$HOME/.rbenv/plugins/ruby-build"
30+
else
31+
# Update ruby-build to get latest version definitions
32+
update_ruby_build
2233
fi
2334

2435
ensure_rbenv_loaded
@@ -35,7 +46,14 @@ ensure_rbenv_loaded() {
3546
get_latest_ruby_version() {
3647
ensure_rbenv
3748
# Get latest stable Ruby version from rbenv (MRI Ruby only, excludes jruby/mruby/truffleruby)
38-
rbenv install --list 2>/dev/null | grep -E '^\s*[0-9]+\.[0-9]+\.[0-9]+$' | tail -1 | tr -d ' ' || echo "4.0.0"
49+
local latest
50+
latest=$(rbenv install --list 2>/dev/null | grep -E '^\s*[0-9]+\.[0-9]+\.[0-9]+$' | tail -1 | tr -d ' ')
51+
if [ -z "$latest" ]; then
52+
# Fallback to known stable version if list fails
53+
echo "${RUBY_VERSION:-3.3.6}"
54+
else
55+
echo "$latest"
56+
fi
3957
}
4058

4159
install_ruby() {

scripts/lib/common.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,9 @@ prefers_rbenv_ruby() {
8282
is_path_under "$p" "$HOME/.rbenv" || return 1
8383
}
8484

85+
# WSL detection
86+
is_wsl() {
87+
grep -qi microsoft /proc/version 2>/dev/null
88+
}
89+
8590

0 commit comments

Comments
 (0)