@cmodjs/cli 2.0.0 → 2.1.0

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.
Files changed (2) hide show
  1. package/bin/cmod +28 -1
  2. package/package.json +1 -1
package/bin/cmod CHANGED
@@ -6,6 +6,20 @@ fail() {
6
6
  exit 1
7
7
  }
8
8
 
9
+ newer() {
10
+ a=$1
11
+ b=$2
12
+ while [ -n "$a$b" ]; do
13
+ x=${a%%.*}
14
+ y=${b%%.*}
15
+ if [ "$a" = "$x" ]; then a=; else a=${a#*.}; fi
16
+ if [ "$b" = "$y" ]; then b=; else b=${b#*.}; fi
17
+ [ "${x:-0}" -gt "${y:-0}" ] 2>/dev/null && return 0
18
+ [ "${x:-0}" -lt "${y:-0}" ] 2>/dev/null && return 1
19
+ done
20
+ return 1
21
+ }
22
+
9
23
  store="${XDG_DATA_HOME:-$HOME/.local/share}/cmod/bin/cmod"
10
24
  package=$(CDPATH='' cd -- "$(dirname -- "$(readlink -f -- "$0")")/.." && pwd)
11
25
 
@@ -44,9 +58,22 @@ if [ -f "$package/package.json" ]; then
44
58
  mv -f "$partial" "$folder/cmod"
45
59
  rm -f "$sums"
46
60
  trap - EXIT HUP INT TERM
61
+ for older in "$store"/*/; do
62
+ name=${older%/}
63
+ name=${name##*/}
64
+ if newer "$version" "$name" && [ -x "${older}cmod" ]; then
65
+ { printf '#!/bin/sh\nexec "%s" "$@"\n' "$folder/cmod" > "${older}.stub.$$" && chmod +x "${older}.stub.$$" && mv -f "${older}.stub.$$" "${older}cmod"; } 2>/dev/null || rm -f "${older}.stub.$$"
66
+ fi
67
+ done
47
68
  fi
48
69
  fi
49
70
 
50
- newest=$(for folder in "$store"/*/; do [ -x "${folder}cmod" ] && basename "$folder"; done | sort -V | tail -n 1)
71
+ newest=
72
+ for folder in "$store"/*/; do
73
+ name=${folder%/}
74
+ name=${name##*/}
75
+ [ -x "${folder}cmod" ] || continue
76
+ if [ -z "$newest" ] || newer "$name" "$newest"; then newest=$name; fi
77
+ done
51
78
  [ -n "$newest" ] || fail "no cmod is installed in $store. Run npm i -g @cmodjs/cli, or install the cmod plugin in Claude Code."
52
79
  exec "$store/$newest/cmod" "$@"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cmodjs/cli",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Claude Mod Manager: install, try, build, check, and publish Claude Code mods.",
5
5
  "license": "MIT",
6
6
  "type": "module",