@@ -94,18 +94,47 @@ jobs:
9494 ~/.cargo/registry/index/
9595 ~/.cargo/registry/cache/
9696 ~/.cargo/git/db/
97- key : cargo-zerv-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
97+ key : cargo-zerv-${{ runner.os }}-${{ inputs.zerv_version || 'latest' }}
9898 restore-keys : |
99- cargo-zerv-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
10099 cargo-zerv-${{ runner.os }}-
101100
102101 - name : Install zerv
103102 run : |
104- if [ -n "${{ inputs.zerv_version }}" ]; then
105- cargo install zerv --version ${{ inputs.zerv_version }} || true
103+ # Get currently installed version (if any)
104+ if command -v zerv >/dev/null 2>&1; then
105+ CURRENT_VERSION=$(zerv --version | awk '{print $2}')
106106 else
107- cargo install zerv || true
107+ CURRENT_VERSION=""
108108 fi
109+
110+ # Get latest version from crates.io
111+ LATEST_VERSION=$(cargo search zerv --limit 1 | head -n 1 | sed -E 's/.*"([^"]+)".*/\1/')
112+
113+ # Input version (may be empty)
114+ REQUIRED_VERSION="${{ inputs.zerv_version }}"
115+
116+ echo "Current zerv version : ${CURRENT_VERSION:-none}"
117+ echo "Latest zerv version : $LATEST_VERSION"
118+ echo "Required version : ${REQUIRED_VERSION:-latest}"
119+
120+ if [ -z "$REQUIRED_VERSION" ]; then
121+ # No input version → use latest
122+ if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
123+ echo "Installing latest zerv ($LATEST_VERSION)"
124+ cargo install zerv --version "$LATEST_VERSION" --force
125+ else
126+ echo "zerv is already up to date"
127+ fi
128+ else
129+ # Input version provided
130+ if [ "$CURRENT_VERSION" != "$REQUIRED_VERSION" ]; then
131+ echo "Installing required zerv version ($REQUIRED_VERSION)"
132+ cargo install zerv --version "$REQUIRED_VERSION" --force
133+ else
134+ echo "Required zerv version already installed"
135+ fi
136+ fi
137+
109138 zerv --version
110139
111140 - name : Generate Zerv RON
@@ -250,4 +279,4 @@ jobs:
250279 ~/.cargo/registry/index/
251280 ~/.cargo/registry/cache/
252281 ~/.cargo/git/db/
253- key : cargo-zerv-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
282+ key : cargo-zerv-${{ runner.os }}-${{ inputs.zerv_version || 'latest' }}
0 commit comments