diff --git a/.github/workflows/vscode.yml b/.github/workflows/vscode.yml new file mode 100644 index 00000000..231cdad1 --- /dev/null +++ b/.github/workflows/vscode.yml @@ -0,0 +1,96 @@ +name: VSCode + +on: + push: + branches: + - master + tags: + - "**" + pull_request: + +jobs: + pre_job: + runs-on: ubuntu-latest + outputs: + should_skip: ${{ steps.skip_check.outputs.should_skip }} + paths_result: ${{ steps.skip_check.outputs.paths_result }} + steps: + - id: skip_check + uses: fkirc/skip-duplicate-actions@c449d86cf33a2a6c7a4193264cc2578e2c3266d4 # pin@v4 + with: + paths: '["squawk-vscode/**"]' + + typecheck: + needs: pre_job + if: needs.pre_job.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version-file: "squawk-vscode/package.json" + cache-dependency-path: "squawk-vscode/pnpm-lock.yaml" + cache: "pnpm" + - name: Install JS dependencies + working-directory: "squawk-vscode" + run: pnpm install + + - name: Run type check + working-directory: "squawk-vscode" + run: pnpm run check-types + + lint: + needs: pre_job + if: needs.pre_job.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version-file: "squawk-vscode/package.json" + cache-dependency-path: "squawk-vscode/pnpm-lock.yaml" + cache: "pnpm" + - name: Install JS dependencies + working-directory: "squawk-vscode" + run: pnpm install + + - name: Run lints + working-directory: "squawk-vscode" + run: pnpm run lint + + test: + needs: pre_job + if: needs.pre_job.outputs.should_skip != 'true' + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version-file: "squawk-vscode/package.json" + cache-dependency-path: "squawk-vscode/pnpm-lock.yaml" + cache: "pnpm" + - name: Install JS dependencies + working-directory: "squawk-vscode" + run: pnpm install + + - name: Run tests + working-directory: "squawk-vscode" + run: xvfb-run pnpm run test diff --git a/squawk-vscode/package.json b/squawk-vscode/package.json index 54c8ac94..bc113e85 100644 --- a/squawk-vscode/package.json +++ b/squawk-vscode/package.json @@ -40,14 +40,14 @@ }, "scripts": { "vscode:prepublish": "pnpm run package", - "compile": "pnpm run check-types && pnpm run lint && node esbuild.js", + "compile": "pnpm run check-types && node esbuild.js", "watch": "npm-run-all -p watch:*", "watch:esbuild": "node esbuild.js --watch", "watch:tsc": "tsc --noEmit --watch --project tsconfig.json", "package": "node esbuild.js --production", "compile-tests": "tsc -p . --outDir out", "watch-tests": "tsc -p . -w --outDir out", - "pretest": "pnpm run compile-tests && pnpm run compile && pnpm run lint", + "pretest": "pnpm run compile-tests && pnpm run compile", "check-types": "tsc --noEmit", "lint": "eslint src", "test": "vscode-test" @@ -63,6 +63,7 @@ "@vscode/vsce": "^3.6.0", "esbuild": "^0.24.0", "eslint": "^9.16.0", + "globals": "^16.2.0", "npm-run-all": "^4.1.5", "prettier": "^3.6.2", "typescript": "^5.7.2", diff --git a/squawk-vscode/pnpm-lock.yaml b/squawk-vscode/pnpm-lock.yaml index 2aa200fc..76748ba5 100644 --- a/squawk-vscode/pnpm-lock.yaml +++ b/squawk-vscode/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: eslint: specifier: ^9.16.0 version: 9.29.0 + globals: + specifier: ^16.2.0 + version: 16.2.0 npm-run-all: specifier: ^4.1.5 version: 4.1.5 @@ -1181,6 +1184,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@16.2.0: + resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -3804,6 +3811,8 @@ snapshots: globals@14.0.0: {} + globals@16.2.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1