Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .eslintrc.js

This file was deleted.

6 changes: 3 additions & 3 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

Expand All @@ -35,4 +35,4 @@ jobs:
npm run build --if-present

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3
10 changes: 5 additions & 5 deletions .github/workflows/extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js 18.x
uses: actions/setup-node@v3
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 18
node-version: 20
- run: npm ci
- run: npm run build --if-present
- run: rm -rf node_modules
- run: npm ci --omit=dev
- run: npm run publish
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
with:
name: extension
path: '*.vsix'
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/node-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 19]
node-version: [20, 22]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.js
!jest.config.js
!.eslintrc.js
!eslint.config.js
!.prettierrc.js
node_modules
.taskkey
Expand Down
84 changes: 84 additions & 0 deletions azure-pipelines-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Azure DevOps Pipeline for publishing to Visual Studio Marketplace
# Triggers on version tags (v*)
# Requires: MARKETPLACE_PAT variable (Personal Access Token with Marketplace Publish scope)

trigger:
tags:
include:
- 'v*'

pr: none

pool:
vmImage: 'ubuntu-latest'

stages:
- stage: Build
displayName: 'Build Extension'
jobs:
- job: BuildJob
displayName: 'Build and Package'
steps:
- task: NodeTool@0
displayName: 'Use Node.js 20.x'
inputs:
versionSpec: '20.x'

- script: npm ci
displayName: 'Install dependencies'

- script: npm run build
displayName: 'Build TypeScript'

- script: npm test
displayName: 'Run tests'

- script: npm run lint:no-fix
displayName: 'Lint check'

- script: npm run publish
displayName: 'Create extension package (VSIX)'

- task: CopyFiles@2
displayName: 'Copy VSIX to staging'
inputs:
Contents: '*.vsix'
TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
displayName: 'Publish VSIX artifact'
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'vsix'

- stage: Publish
displayName: 'Publish to Marketplace'
dependsOn: Build
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
jobs:
- job: PublishJob
displayName: 'Publish Extension'
steps:
- task: DownloadBuildArtifacts@1
displayName: 'Download VSIX artifact'
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'vsix'
downloadPath: '$(System.ArtifactsDirectory)'

- task: NodeTool@0
displayName: 'Use Node.js 20.x'
inputs:
versionSpec: '20.x'

- script: npm install -g tfx-cli
displayName: 'Install tfx-cli'

- script: |
VSIX_FILE=$(find $(System.ArtifactsDirectory)/vsix -name "*.vsix" | head -1)
echo "Publishing: $VSIX_FILE"
tfx extension publish --vsix "$VSIX_FILE" --token $(MARKETPLACE_PAT) --no-prompt
displayName: 'Publish to VS Marketplace'
env:
MARKETPLACE_PAT: $(MARKETPLACE_PAT)
37 changes: 37 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
const eslint = require('@eslint/js');
const tseslint = require('@typescript-eslint/eslint-plugin');
const tsparser = require('@typescript-eslint/parser');
const prettierConfig = require('eslint-config-prettier');
const prettierPlugin = require('eslint-plugin-prettier');

module.exports = [
eslint.configs.recommended,
{
files: ['**/*.ts'],
languageOptions: {
parser: tsparser,
parserOptions: {
ecmaVersion: 2020,
sourceType: 'module',
},
},
plugins: {
'@typescript-eslint': tseslint,
'prettier': prettierPlugin,
},
rules: {
...tseslint.configs.recommended.rules,
...prettierConfig.rules,
'prettier/prettier': 'error',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }],
'no-undef': 'off', // TypeScript handles this
'no-unused-vars': 'off' // TypeScript handles this
},
},
{
ignores: ['node_modules/**', '**/*.js', '!eslint.config.js'],
},
];
Loading