fix values that were narrowed to Never
being coloured as a type
#393
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'build and release' | |
env: | |
PYTHON_VERSION: '3.12' | |
ARTIFACT_NAME_VSIX: vsix | |
VSIX_NAME: vscode-pyright.vsix | |
VSIX_DIR: packages/vscode-pyright | |
NPM_PACKAGE_DIR: packages/pyright | |
on: push | |
jobs: | |
build-and-release: | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: write | |
packages: write | |
pull-requests: read | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- run: ./pw pdm use ${{ env.PYTHON_VERSION }} | |
- run: ./pw pdm install | |
# using relative path for npm scripts because it needs to work in the package directories too | |
- name: add pyprojectx and npm scripts to PATH | |
run: | | |
realpath ./.pyprojectx/main >> $GITHUB_PATH | |
echo ./node_modules/.bin >> $GITHUB_PATH | |
- id: current-version | |
run: | | |
echo ::set-output name=CURRENT_VERSION::$(pdm show --version) | |
echo ::set-output name=CURRENT_UPSTREAM_VERSION::$(pdm run node -p "require(\"./lerna.json\").version") | |
- name: get currently published npm package version | |
if: github.ref == 'refs/heads/main' | |
run: echo ::set-output name=VERSION_INFO::$(pdm run npm view $(node -p "require(\"./package.json\").name")@=${{ steps.current-version.outputs.CURRENT_VERSION }}) | |
id: version-was-changed | |
working-directory: ${{ env.NPM_PACKAGE_DIR }} | |
- name: set version for npm packages | |
if: github.ref == 'refs/heads/main' | |
run: lerna version ${{ steps.current-version.outputs.CURRENT_VERSION }} --yes --no-git-tag-version | |
- name: Build VSIX | |
working-directory: ${{ env.VSIX_DIR }} | |
run: | | |
pdm run npm run package | |
mv basedpyright-*.vsix ${{ env.VSIX_NAME }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ARTIFACT_NAME_VSIX }} | |
path: ${{ env.VSIX_DIR }}/${{ env.VSIX_NAME }} | |
# publish npm canary version on every push to every branch except main | |
- name: set version for npm canary | |
if: github.ref != 'refs/heads/main' | |
run: pdm run npm version ${{ steps.current-version.outputs.CURRENT_VERSION }}-$GITHUB_SHA --git-tag-version false | |
working-directory: ${{ env.NPM_PACKAGE_DIR }} | |
- name: publish package - npm canary | |
if: github.ref != 'refs/heads/main' | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
access: public | |
tag: canary | |
package: ${{ env.NPM_PACKAGE_DIR }}/package.json | |
- name: publish package - npm | |
# publish npm & pypi packages, vscode extension and github release if the version in lerna.json was changed: | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
uses: JS-DevTools/npm-publish@v1 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
access: public | |
package: ${{ env.NPM_PACKAGE_DIR }}/package.json | |
# this isn't ideal, but it's required becayse pdm publish re-builds the npm packages even tho they were already built earlier. | |
# i think to fix that i need to rewrite pdm_build.py to use the build hooks so we can control it more easily, but i can't get that to work soooo | |
- name: set npm package versions back to upstream so pypi package can use it in --version output | |
if: github.ref == 'refs/heads/main' | |
run: lerna version ${{ steps.current-version.outputs.CURRENT_UPSTREAM_VERSION }} --yes --no-git-tag-version | |
- name: publish package - pypi | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
run: pdm publish | |
# https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token | |
- name: publish VSIX - visual studio marketplace | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
run: vsce publish --packagePath ${{ env.VSIX_NAME }} --pat ${{ secrets.VSCE_TOKEN }} --noVerify | |
working-directory: ${{ env.VSIX_DIR }} | |
- name: publish VSIX - open VSX | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
run: ovsx publish --packagePath ${{ env.VSIX_NAME }} --pat ${{ secrets.OPEN_VSX_TOKEN }} | |
working-directory: ${{ env.VSIX_DIR }} | |
- uses: marvinpinto/action-automatic-releases@v1.2.1 | |
if: github.ref == 'refs/heads/main' && steps.version-was-changed.outputs.VERSION_INFO == '' | |
with: | |
title: v${{ steps.current-version.outputs.CURRENT_VERSION }} (pyright ${{ steps.current-version.outputs.CURRENT_UPSTREAM_VERSION }}) | |
draft: true # so i can write the release notes manually before publishing it | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: false | |
files: | | |
dist/* | |
${{ env.VSIX_DIR }}/${{ env.VSIX_NAME }} | |
automatic_release_tag: v${{ steps.current-version.outputs.CURRENT_VERSION }} |