Рубрики
Без рубрики

Автоматизация упаковки расширения визуального студийного кода

Во время моей работы с визуальным студийным кодом расширение Angulartools я более чем раз надоедорово забыл … Помечено VSCode, расширением, Python, автоматизация.

Во время моей работы с расширением кода Visual Studio Ангулартс Я более чем однажды раздражающе забыл один из шагов в развертывании.

Это не сложный набор задач, но в моем списке вещей, чтобы сделать при упаковке новой версии, мне нужно:

  • Убедитесь, что номер версии в Package.json был обновлен.
  • Убедитесь, что файл changelog.md был обновлен с описанием begfixes и новых функций.
  • Создайте тег для версии в репозитории Git.
  • Беги VSCE пакет Чтобы создать файл пакета VSIX.

Поэтому я автоматизировал задачи с помощью сценария Python ниже:

import os
import json
import re
from git import Repo, TagReference

def readVersionFromPackageJson():
  packageJson = open("package.json", "r")
  contentRaw = packageJson.read()
  contentJson = json.loads(contentRaw)
  packageJson.close()
  return contentJson["version"]

def isPackageJsonVersionTagged(repo, packageJsonVersion):
  packageJsonVersionTagFound = False
  for tag in repo.tags:
    if tag.name == packageJsonVersion:
      packageJsonVersionTagFound = True
      break
  return packageJsonVersionTagFound

def isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion):
  packageJsonVersionChangeLogEntryFound = False
  changeLog = open("CHANGELOG.md", "r")
  changeLogContent = changeLog.readlines()
  changeLog.close()
  for line in changeLogContent:
    match = re.search(f"^## Version {packageJsonVersion}$", line)
    if match:
      packageJsonVersionChangeLogEntryFound = True
      break
  return packageJsonVersionChangeLogEntryFound

def packageExtension():
  os.system("vsce package")

def main():
  packageJsonVersion = readVersionFromPackageJson()
  repo = Repo("./")
  packageJsonVersionTagFound = isPackageJsonVersionTagged(repo, packageJsonVersion)
  packageJsonVersionChangeLogEntryFound = isChangeLogUpdatedWithPackageJsonVersion(packageJsonVersion)

  if not packageJsonVersionChangeLogEntryFound:
    print("Fail: CHANGELOG.md not update!")
  else:
    if not packageJsonVersionTagFound:
      print(f"New version found in package.json: {packageJsonVersion}.")
      print("Creating tag in Git...")
      repo.create_tag(packageJsonVersion)
      print("Creating vsix package...")
      packageExtension()
    else:
      print(f"Fail: Version already tagged: {packageJsonVersion}.")
      print("No vsix package created")

main()

Я надеюсь, что вы найдете это полезным или что он вдохновляет вас автоматизировать некоторые из ваших скучных или раздражающих задач.

Вы можете найти скрипт и код для Angulartools на Github Отказ

Оригинал: “https://dev.to/coderallan/automate-packaging-of-visual-studio-code-extension-3gg4”