snapshot of c000b74a5b09c433f96a69fa102c5c8f6583dff0 Annotations about the code that implements koment.

.github/workflows/release.yml

1 name: release
2
3 on:
4 push:
5 branches: [main]
6 workflow_dispatch:
7
8 permissions:
9 contents: read
10
11 concurrency:
12 group: ${{ github.workflow }}-${{ github.ref }}
13 cancel-in-progress: false
14
15 jobs:
16 please:
17 name: release please
18 runs-on: ubuntu-24.04
19 permissions:
20 contents: write
21 id-token: write
22 pull-requests: write
23 outputs:
24 released: ${{ steps.release.outputs.release_created }}
25 tag: ${{ steps.release.outputs.tag_name }}
26 upload_url: ${{ steps.release.outputs.upload_url }}
27 version: ${{ steps.release.outputs.version }}
28 steps:
29 - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0
30 id: release
31 with:
32 config-file: release-please-config.json
33 manifest-file: .release-please-manifest.json
34
35 plugins:
36 name: publish plugins
37 needs: [please, binaries, image]
38 if: needs.please.outputs.released == 'true'
39 runs-on: ubuntu-24.04
40 permissions:
41 contents: write
42 id-token: write
43 steps:
44 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
45 with:
46 persist-credentials: false
47
48 - name: setup Node.js
49 uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
50 with:
51 node-version: '24.19.0'
52 registry-url: 'https://registry.npmjs.org'
53
54 - name: package plugins
55 env:
56 VERSION: ${{ needs.please.outputs.version }}
57 run: |
58 set -euo pipefail
59 ./scripts/package-agent-plugins.sh "$VERSION" dist
60 (cd dist && sha256sum koment-plugin-*.tar.gz > "koment-plugins_${VERSION}_checksums.txt")
61 ls -l dist
62
63 - name: publish @koment/opencode-koment to npm
64 env:
65 NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
66 VERSION: ${{ needs.please.outputs.version }}
67 run: |
68 set -euo pipefail
69 published_version=$(node -p "require('./dist/opencode-npm/package.json').version")
70 if [ "$published_version" != "$VERSION" ]; then
71 echo "::error::package.json version ($published_version) does not match release version ($VERSION); release-please must own this file."
72 exit 1
73 fi
74 npm publish ./dist/opencode-npm --access public --provenance
75
76 - name: install cosign
77 uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
78
79 - name: sign plugin archives
80 env:
81 VERSION: ${{ needs.please.outputs.version }}
82 run: |
83 set -euo pipefail
84 for archive in dist/koment-plugin-*.tar.gz; do
85 cosign sign-blob --yes --bundle "${archive}.sigstore.json" "$archive"
86 done
87 cosign sign-blob --yes \
88 --bundle "dist/koment-plugins_${VERSION}_checksums.sigstore.json" \
89 "dist/koment-plugins_${VERSION}_checksums.txt"
90
91 - name: attach to the release
92 env:
93 GH_TOKEN: ${{ github.token }}
94 RELEASE_UPLOAD_URL: ${{ needs.please.outputs.upload_url }}
95 run: |
96 ./scripts/upload-release-assets.sh "$RELEASE_UPLOAD_URL" \
97 dist/koment-plugin-*.tar.gz \
98 dist/koment-plugin-*.tar.gz.sigstore.json \
99 dist/koment-plugins_*_checksums.txt \
100 dist/koment-plugins_*.sigstore.json
101
102 binaries:
103 name: publish binaries
104 needs: please
105 if: needs.please.outputs.released == 'true'
106 runs-on: ubuntu-24.04
107 permissions:
108 contents: write
109 id-token: write
110 steps:
111 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
112 with:
113 persist-credentials: false
114 - uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
115 with:
116 go-version-file: go.mod
117 cache: true
118
119 - name: build
120 env:
121 VERSION: ${{ needs.please.outputs.version }}
122 run: |
123 set -euo pipefail
124 mkdir -p dist
125 cp LICENSE README.md dist/
126 for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64; do
127 os=${target%/*}
128 arch=${target#*/}
129 binary=koment
130 [ "$os" = windows ] && binary=koment.exe
131
132 CGO_ENABLED=0 GOOS=$os GOARCH=$arch go build -trimpath \
133 -ldflags="-s -w -X main.releaseVersion=${VERSION} -X main.sourceRevision=${GITHUB_SHA} -X github.com/koment-dev/koment/internal/mcp.serverVersion=${VERSION}" \
134 -o "dist/${binary}" ./cmd/koment
135
136 name="koment_${VERSION}_${os}_${arch}"
137 if [ "$os" = windows ]; then
138 (cd dist && zip -q "${name}.zip" "$binary" LICENSE README.md && rm "$binary")
139 else
140 (cd dist && tar -czf "${name}.tar.gz" "$binary" LICENSE README.md && rm "$binary")
141 fi
142 done
143 rm dist/LICENSE dist/README.md
144
145 linux_amd64_sha=$(sha256sum "dist/koment_${VERSION}_linux_amd64.tar.gz" | awk '{print $1}')
146 linux_arm64_sha=$(sha256sum "dist/koment_${VERSION}_linux_arm64.tar.gz" | awk '{print $1}')
147 darwin_amd64_sha=$(sha256sum "dist/koment_${VERSION}_darwin_amd64.tar.gz" | awk '{print $1}')
148 darwin_arm64_sha=$(sha256sum "dist/koment_${VERSION}_darwin_arm64.tar.gz" | awk '{print $1}')
149 windows_amd64_sha=$(sha256sum "dist/koment_${VERSION}_windows_amd64.zip" | awk '{print $1}')
150 windows_arm64_sha=$(sha256sum "dist/koment_${VERSION}_windows_arm64.zip" | awk '{print $1}')
151
152 render() {
153 sed \
154 -e "s/{{VERSION}}/${VERSION}/g" \
155 -e "s/{{LINUX_AMD64_SHA}}/${linux_amd64_sha}/g" \
156 -e "s/{{LINUX_ARM64_SHA}}/${linux_arm64_sha}/g" \
157 -e "s/{{DARWIN_AMD64_SHA}}/${darwin_amd64_sha}/g" \
158 -e "s/{{DARWIN_ARM64_SHA}}/${darwin_arm64_sha}/g" \
159 -e "s/{{WINDOWS_AMD64_SHA}}/${windows_amd64_sha}/g" \
160 -e "s/{{WINDOWS_ARM64_SHA}}/${windows_arm64_sha}/g" \
161 -e "s/{{WINDOWS_AMD64_SHA_UPPER}}/$(printf '%s' "$windows_amd64_sha" | tr '[:lower:]' '[:upper:]')/g" \
162 -e "s/{{WINDOWS_ARM64_SHA_UPPER}}/$(printf '%s' "$windows_arm64_sha" | tr '[:lower:]' '[:upper:]')/g" \
163 "$1" > "$2"
164 }
165
166 render distribution/package-managers/homebrew/koment.rb.tmpl dist/koment.rb
167 render distribution/package-managers/scoop/koment.json.tmpl dist/koment-scoop.json
168 mkdir -p dist/winget
169 render distribution/package-managers/winget/Koment.Koment.installer.yaml.tmpl dist/winget/Koment.Koment.installer.yaml
170 render distribution/package-managers/winget/Koment.Koment.locale.en-US.yaml.tmpl dist/winget/Koment.Koment.locale.en-US.yaml
171 render distribution/package-managers/winget/Koment.Koment.yaml.tmpl dist/winget/Koment.Koment.yaml
172 (cd dist/winget && zip -q "../koment_${VERSION}_winget.zip" ./*.yaml)
173
174 (cd dist && sha256sum ./*.tar.gz ./*.zip ./koment.rb ./koment-scoop.json | sed 's| \./| |' > "koment_${VERSION}_checksums.txt")
175 ls -l dist
176
177 - name: install cosign
178 uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
179
180 - name: sign checksum manifest
181 env:
182 VERSION: ${{ needs.please.outputs.version }}
183 run: |
184 cosign sign-blob --yes \
185 --bundle "dist/koment_${VERSION}_checksums.sigstore.json" \
186 "dist/koment_${VERSION}_checksums.txt"
187
188 - name: attach to the release
189 env:
190 GH_TOKEN: ${{ github.token }}
191 RELEASE_UPLOAD_URL: ${{ needs.please.outputs.upload_url }}
192 run: |
193 ./scripts/upload-release-assets.sh "$RELEASE_UPLOAD_URL" \
194 dist/koment_*.tar.gz dist/koment_*.zip dist/koment_*_checksums.txt \
195 dist/koment_*_checksums.sigstore.json dist/koment.rb dist/koment-scoop.json
196
197 tap:
198 name: publish the homebrew formula
199 needs: [please, binaries]
200 if: needs.please.outputs.released == 'true'
201 runs-on: ubuntu-24.04
202 permissions:
203 contents: read
204 steps:
205 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
206 with:
207 repository: ${{ github.repository_owner }}/homebrew-tap
208 ssh-key: ${{ secrets.HOMEBREW_TAP_DEPLOY_KEY }}
209 persist-credentials: true
210
211 - name: take the formula this release published
212 env:
213 RELEASE_TAG: ${{ needs.please.outputs.tag }}
214 SOURCE_REPOSITORY: ${{ github.repository }}
215 run: |
216 mkdir -p Formula
217 curl --fail --location --silent --show-error \
218 --retry 6 --retry-all-errors --retry-delay 5 \
219 --output Formula/koment.rb \
220 "https://github.com/${SOURCE_REPOSITORY}/releases/download/${RELEASE_TAG}/koment.rb"
221
222 - name: reject a formula that does not carry this version
223 env:
224 VERSION: ${{ needs.please.outputs.version }}
225 run: |
226 grep -q "version \"${VERSION}\"" Formula/koment.rb || {
227 echo "the downloaded formula does not declare ${VERSION}"
228 head -5 Formula/koment.rb
229 exit 1
230 }
231
232 - name: commit the formula
233 env:
234 VERSION: ${{ needs.please.outputs.version }}
235 run: |
236 if git diff --quiet -- Formula/koment.rb; then
237 echo "the tap already carries ${VERSION}"
238 exit 0
239 fi
240 git config user.name "koment-release[bot]"
241 git config user.email "koment-release[bot]@users.noreply.github.com"
242 git add Formula/koment.rb
243 git commit -m "chore: koment ${VERSION}"
244 git push
245
246 alias:
247 name: move the major version tag
248 needs: [please, verify]
249 if: needs.please.outputs.released == 'true'
250 runs-on: ubuntu-24.04
251 permissions:
252 contents: write
253 steps:
254 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
255 with:
256 fetch-depth: 0
257 persist-credentials: true
258
259 - name: point the major tag at this release
260 env:
261 RELEASE_TAG: ${{ needs.please.outputs.tag }}
262 VERSION: ${{ needs.please.outputs.version }}
263 run: |
264 case "$VERSION" in
265 *[!0-9.]*)
266 echo "$VERSION is not a plain X.Y.Z release; leaving the major alias where it is"
267 exit 0
268 ;;
269 esac
270 major="v${VERSION%%.*}"
271 echo "pointing ${major} at ${RELEASE_TAG}"
272 git config user.name "koment-release[bot]"
273 git config user.email "koment-release[bot]@users.noreply.github.com"
274 git tag -f "$major" "$RELEASE_TAG"
275 git push --force origin "refs/tags/${major}"
276
277 verify:
278 name: verify the published release
279 needs: [please, binaries]
280 if: needs.please.outputs.released == 'true'
281 runs-on: ${{ matrix.os }}
282 permissions:
283 contents: read
284 strategy:
285 fail-fast: false
286 matrix:
287 os:
288 - ubuntu-24.04
289 - macos-15
290 steps:
291 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
292 with:
293 persist-credentials: false
294
295 - name: Install the release that was just published
296 id: setup
297 uses: ./
298 with:
299 version: ${{ needs.please.outputs.version }}
300
301 - name: Verify it is the release this run produced
302 env:
303 INSTALLED_VERSION: ${{ steps.setup.outputs.version }}
304 RELEASED_VERSION: ${{ needs.please.outputs.version }}
305 run: |
306 set -euo pipefail
307 command -v koment
308 koment version
309 test "$INSTALLED_VERSION" = "$RELEASED_VERSION"
310 koment version | grep -q "$RELEASED_VERSION"
311
312 image:
313 name: publish image
314 needs: please
315 if: needs.please.outputs.released == 'true'
316 runs-on: ubuntu-24.04
317 permissions:
318 contents: read
319 packages: write
320 id-token: write
321 steps:
322 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
323 with:
324 persist-credentials: false
325
326 - uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
327 - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0
328
329 - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
330 with:
331 registry: ghcr.io
332 username: ${{ github.actor }}
333 password: ${{ secrets.GITHUB_TOKEN }}
334
335 - id: meta
336 uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0
337 with:
338 images: ghcr.io/${{ github.repository }}
339 tags: |
340 type=semver,pattern={{version}},value=${{ needs.please.outputs.tag }}
341 type=semver,pattern={{major}}.{{minor}},value=${{ needs.please.outputs.tag }}
342 type=semver,pattern={{major}},value=${{ needs.please.outputs.tag }}
343 type=raw,value=latest
344
345 - id: build
346 uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0
347 with:
348 context: .
349 platforms: linux/amd64,linux/arm64
350 push: true
351 provenance: true
352 sbom: true
353 tags: ${{ steps.meta.outputs.tags }}
354 labels: ${{ steps.meta.outputs.labels }}
355 build-args: |
356 VERSION=${{ needs.please.outputs.version }}
357 REVISION=${{ github.sha }}
358 cache-from: type=gha
359 cache-to: type=gha,mode=max
360
361 - name: install cosign
362 uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
363
364 - name: sign image manifest
365 env:
366 DIGEST: ${{ steps.build.outputs.digest }}
367 IMAGE: ghcr.io/${{ github.repository }}
368 run: cosign sign --yes "${IMAGE}@${DIGEST}"
369
370 mcp-registry:
371 name: publish MCP registry metadata
372 needs: [please, binaries, image]
373 if: needs.please.outputs.released == 'true'
374 runs-on: ubuntu-24.04
375 permissions:
376 contents: read
377 id-token: write
378 env:
379 MCP_PUBLISHER_SHA256: a06c9096dcb9727c13555b6be26c7effa707b01f06a4c561ba7a3635443cf2cc
380 MCP_PUBLISHER_VERSION: 1.8.1
381 steps:
382 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
383 with:
384 persist-credentials: false
385
386 - name: Prepare release metadata
387 env:
388 IMAGE: ghcr.io/${{ github.repository }}:${{ needs.please.outputs.version }}
389 VERSION: ${{ needs.please.outputs.version }}
390 run: |
391 mkdir -p /tmp/koment-mcp
392 jq --arg version "$VERSION" --arg image "$IMAGE" \
393 '.version = $version | .packages[0].identifier = $image | del(.packages[0].version)' \
394 server.json > /tmp/koment-mcp/server.json
395
396 - name: Install MCP publisher
397 run: |
398 archive=/tmp/mcp-publisher.tar.gz
399 curl --fail --location --silent --show-error \
400 --output "$archive" \
401 "https://github.com/modelcontextprotocol/registry/releases/download/v${MCP_PUBLISHER_VERSION}/mcp-publisher_linux_amd64.tar.gz"
402 printf '%s %s\n' "$MCP_PUBLISHER_SHA256" "$archive" | sha256sum --check
403 tar -xzf "$archive" -C /tmp mcp-publisher
404
405 - name: Publish MCP server
406 working-directory: /tmp/koment-mcp
407 run: |
408 /tmp/mcp-publisher login github-oidc
409 /tmp/mcp-publisher publish
410
411 chart:
412 name: publish chart
413 needs: [please, binaries, image]
414 if: needs.please.outputs.released == 'true'
415 runs-on: ubuntu-24.04
416 permissions:
417 contents: write
418 packages: write
419 id-token: write
420 env:
421 CHART_VERSION: ${{ needs.please.outputs.version }}
422 REGISTRY_OWNER: ${{ github.repository_owner }}
423 REGISTRY_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
424 REGISTRY_USER: ${{ github.actor }}
425 steps:
426 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
427 with:
428 persist-credentials: false
429 - uses: azure/setup-helm@9bc31f4ebc9c6b171d7bfbaa5d006ae7abdb4310 # v5.0.1
430 - uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
431
432 - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
433 with:
434 registry: ghcr.io
435 username: ${{ github.actor }}
436 password: ${{ secrets.GITHUB_TOKEN }}
437
438 - name: package and push
439 env:
440 GH_TOKEN: ${{ github.token }}
441 RELEASE_UPLOAD_URL: ${{ needs.please.outputs.upload_url }}
442 run: |
443 helm registry login ghcr.io \
444 --username "$REGISTRY_USER" \
445 --password "$REGISTRY_PASSWORD"
446 helm package distribution/helm/koment --destination /tmp
447 push_output=$(helm push "/tmp/koment-${CHART_VERSION}.tgz" \
448 "oci://ghcr.io/${REGISTRY_OWNER}/charts")
449 printf '%s\n' "$push_output"
450 digest=$(printf '%s\n' "$push_output" | awk '/^Digest:/ {print $2}')
451 test -n "$digest"
452 cosign sign --yes "ghcr.io/${REGISTRY_OWNER}/charts/koment@${digest}"
453 cosign sign-blob --yes \
454 --bundle "/tmp/koment-${CHART_VERSION}.tgz.sigstore.json" \
455 "/tmp/koment-${CHART_VERSION}.tgz"
456 ./scripts/upload-release-assets.sh "$RELEASE_UPLOAD_URL" \
457 "/tmp/koment-${CHART_VERSION}.tgz" \
458 "/tmp/koment-${CHART_VERSION}.tgz.sigstore.json"
459
460 editor:
461 name: publish editor extension
462 needs: [please, binaries]
463 if: needs.please.outputs.released == 'true'
464 runs-on: ubuntu-24.04
465 permissions:
466 contents: write
467 id-token: write
468 env:
469 OVSX_PAT: ${{ secrets.OVSX_PAT }}
470 PUBLISH_EDITOR_MARKETPLACES: ${{ vars.PUBLISH_EDITOR_MARKETPLACES }}
471 VSCE_PAT: ${{ secrets.VSCE_PAT }}
472 steps:
473 - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
474 with:
475 persist-credentials: false
476
477 - uses: jdx/mise-action@3c2e0cf82a5b2e5249f0d3635a4d83d0ae861518 # v4.2.5
478 with:
479 experimental: true
480 install: false
481
482 - name: install locked editor tools
483 run: mise --cd integrations/editors/vscode install --locked
484
485 - name: install editor packaging tools
486 run: mise --cd integrations/editors/vscode exec -- npm ci
487
488 - name: collect the canonical archives
489 env:
490 RELEASE_TAG: ${{ needs.please.outputs.tag }}
491 SOURCE_REPOSITORY: ${{ github.repository }}
492 VERSION: ${{ needs.please.outputs.version }}
493 run: |
494 set -euo pipefail
495 mkdir -p archives
496 base="https://github.com/${SOURCE_REPOSITORY}/releases/download/${RELEASE_TAG}"
497 for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64; do
498 os=${target%/*}
499 arch=${target#*/}
500 extension=tar.gz
501 [ "$os" = windows ] && extension=zip
502 archive="koment_${VERSION}_${os}_${arch}.${extension}"
503 curl --fail --location --silent --show-error \
504 --retry 6 --retry-all-errors --retry-delay 5 \
505 --output "archives/${archive}" "${base}/${archive}"
506 done
507 curl --fail --location --silent --show-error \
508 --retry 6 --retry-all-errors --retry-delay 5 \
509 --output "archives/koment_${VERSION}_checksums.txt" \
510 "${base}/koment_${VERSION}_checksums.txt"
511 ls -l archives
512
513 - name: package extension for every platform
514 env:
515 VERSION: ${{ needs.please.outputs.version }}
516 run: |
517 set -euo pipefail
518 test "$(node -p "require('./integrations/editors/vscode/package.json').version")" = "$VERSION"
519 ./integrations/editors/vscode/package-vsix.sh "$VERSION" archives dist
520
521 - name: install cosign
522 uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
523
524 - name: sign and attach every extension package
525 env:
526 GH_TOKEN: ${{ github.token }}
527 RELEASE_UPLOAD_URL: ${{ needs.please.outputs.upload_url }}
528 run: |
529 set -euo pipefail
530 for package in dist/koment-vscode_*.vsix; do
531 cosign sign-blob --yes --bundle "${package}.sigstore.json" "$package"
532 done
533 ./scripts/upload-release-assets.sh "$RELEASE_UPLOAD_URL" \
534 dist/koment-vscode_*.vsix dist/koment-vscode_*.vsix.sigstore.json
535
536 - name: report that marketplace publication is off
537 if: env.PUBLISH_EDITOR_MARKETPLACES != 'true'
538 run: |
539 echo "::notice::PUBLISH_EDITOR_MARKETPLACES is not 'true'." \
540 "The signed VSIX is attached to the release; no marketplace was updated."
541
542 - name: publish to VS Code Marketplace
543 if: env.PUBLISH_EDITOR_MARKETPLACES == 'true'
544 run: |
545 set -euo pipefail
546 if [ -z "$VSCE_PAT" ]; then
547 echo "::error::marketplace publication is enabled but VSCE_PAT is unset"
548 exit 1
549 fi
550 publish_with_retry() {
551 attempt=1
552 until "$@"; do
553 if [ "$attempt" -ge 3 ]; then
554 return 1
555 fi
556 echo "::warning::marketplace command failed on attempt ${attempt}; retrying"
557 attempt=$((attempt + 1))
558 sleep 10
559 done
560 }
561 for package in dist/koment-vscode_*.vsix; do
562 publish_with_retry integrations/editors/vscode/node_modules/.bin/vsce publish \
563 --skip-duplicate --packagePath "$package"
564 done
565
566 - name: publish to Open VSX
567 if: env.PUBLISH_EDITOR_MARKETPLACES == 'true'
568 run: |
569 set -euo pipefail
570 if [ -z "$OVSX_PAT" ]; then
571 echo "::error::marketplace publication is enabled but OVSX_PAT is unset"
572 exit 1
573 fi
574 publisher=$(node -p "require('./integrations/editors/vscode/package.json').publisher")
575 if curl --fail --silent --output /dev/null "https://open-vsx.org/api/${publisher}"; then
576 echo "Open VSX namespace ${publisher} already exists"
577 else
578 echo "creating Open VSX namespace ${publisher}"
579 integrations/editors/vscode/node_modules/.bin/ovsx create-namespace "$publisher"
580 fi
581 publish_with_retry() {
582 attempt=1
583 until "$@"; do
584 if [ "$attempt" -ge 3 ]; then
585 return 1
586 fi
587 echo "::warning::marketplace command failed on attempt ${attempt}; retrying"
588 attempt=$((attempt + 1))
589 sleep 10
590 done
591 }
592 for package in dist/koment-vscode_*.vsix; do
593 publish_with_retry integrations/editors/vscode/node_modules/.bin/ovsx publish \
594 --skip-duplicate "$package"
595 done

Find an annotation

Search file paths, rationale, kinds, and authors.

moveEnter openEsc close