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
104 changes: 58 additions & 46 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
.PHONY: all clean install build package publish publish-ovsx
.PHONY: all clean install build package publish publish-ovsx publish-vsx git-tag

# Variables
NODE_BIN := node
NPM_BIN := npm
VSCE_CMD := npx -y @vscode/vsce
OVSX_CMD := npx -y ovsx

# Get version and name from package.json using node
EXTENSION_NAME := $(shell $(NODE_BIN) -p "require('./package.json').name")
EXTENSION_VERSION := $(shell $(NODE_BIN) -p "require('./package.json').version")
VSIX_FILE := $(EXTENSION_NAME)-$(EXTENSION_VERSION).vsix

# Default target
all: clean install build package
Expand All @@ -9,68 +20,69 @@ clean:

# Install dependencies
install:
yarn install
$(NPM_BIN) install

# Build the extension
build:
yarn run vscode:prepublish
$(NPM_BIN) run vscode:prepublish

# Package the extension
package: build
vsce package
$(VSCE_CMD) package

# publish the extension to VS Code Marketplace and Open VSX Registry
publish: package git-tag
@echo "Publishing to VS Code Marketplace..."
test -f ./pat || (echo "Error: pat file not found" && exit 1)
vsce publish -p $(shell cat ./pat)
@echo "Publishing to VS Code Marketplace..."
# Publish the extension to VS Code Marketplace and Open VSX Registry
publish: package
@echo "Publishing $(VSIX_FILE) to VS Code Marketplace..."
test -f ./pat || (echo "Error: pat file not found. Please create a file named 'pat' containing your Personal Access Token." && exit 1)
$(VSCE_CMD) publish --packagePath $(VSIX_FILE) -p $(shell cat ./pat)
@echo "Successfully published to VS Code Marketplace."

@echo "Publishing to Open VSX Registry..."
test -f ./pat-open-vsx || (echo "Error: pat-open-vsx file not found" && exit 1)
ovsx publish -p $(shell cat ./pat-open-vsx)
@echo "Publishing to Open VSX Registry..."
@echo "Publishing $(VSIX_FILE) to Open VSX Registry..."
test -f ./pat-open-vsx || (echo "Error: pat-open-vsx file not found. Please create a file named 'pat-open-vsx' containing your Open VSX Access Token." && exit 1)
$(OVSX_CMD) publish $(VSIX_FILE) -p $(shell cat ./pat-open-vsx)
@echo "Successfully published to Open VSX Registry."

# Publish the extension to VS Code Marketplace
publish-vsx: package git-tag
@echo "Publishing to VS Code Marketplace..."
# Publish the extension to VS Code Marketplace only
publish-vsx: package
@echo "Publishing $(VSIX_FILE) to VS Code Marketplace..."
test -f ./pat || (echo "Error: pat file not found" && exit 1)
vsce publish -p $(shell cat ./pat)
$(VSCE_CMD) publish --packagePath $(VSIX_FILE) -p $(shell cat ./pat)

# Publish the extension to Open VSX Registry
publish-ovsx: package git-tag
@echo "Publishing to Open VSX Registry..."
# Publish the extension to Open VSX Registry only
publish-ovsx: package
@echo "Publishing $(VSIX_FILE) to Open VSX Registry..."
test -f ./pat-open-vsx || (echo "Error: pat-open-vsx file not found" && exit 1)
ovsx publish -p $(shell cat ./pat-open-vsx)
$(OVSX_CMD) publish $(VSIX_FILE) -p $(shell cat ./pat-open-vsx)

# Watch mode for development
watch:
yarn run watch
$(NPM_BIN) run watch

# Git tag and version bump (interactive)
git-tag:
@echo "Creating a new git tag..."
@read -p "Enter the version number (e.g., 1.0.0): " VERSION && \
VERSION=$${VERSION#v} && \
git tag -a "v$$VERSION" -m "Release v$$VERSION" && \
git push origin "v$$VERSION" && \
echo "Git tag v$$VERSION created and pushed." && \
echo "Updating package.json version to $$VERSION..." && \
jq --arg version "$$VERSION" '.version = $$version' package.json > tmp.json && mv tmp.json package.json && \
echo "package.json version updated to $$VERSION."
@echo "Current version: $(EXTENSION_VERSION)"
@read -p "Enter the new version number (e.g., 1.0.1): " VERSION; \
VERSION=$${VERSION#v}; \
if [ -z "$$VERSION" ]; then echo "Version cannot be empty"; exit 1; fi; \
echo "Updating package.json version to $$VERSION..."; \
$(NODE_BIN) -e "let pkg=require('./package.json'); pkg.version='$$VERSION'; require('fs').writeFileSync('package.json', JSON.stringify(pkg, null, 2));"; \
echo "package.json updated."; \
git add package.json; \
git commit -m "Bump version to $$VERSION"; \
git tag -a "v$$VERSION" -m "Release v$$VERSION"; \
git push origin main; \
git push origin "v$$VERSION"; \
echo "Git tag v$$VERSION created and pushed."

# Help target
# Help target
help:
@echo "Available targets:"
@echo " all : Clean, install dependencies, build and package (default)"
@echo " clean : Remove build artifacts"
@echo " install : Install dependencies"
@echo " build : Build the extension"
@echo " package : Create VSIX package"
@echo " publish : Publish to VS Code Marketplace (requires PAT env var)"
@echo " publish-ovsx : Publish to Open VSX Registry (requires pat-open-vsx file)"
@echo " watch : Watch mode for development"
@echo ""
@echo "Usage:"
@echo " make # Build everything"
@echo " make publish # Publish to VS Code marketplace"
@echo " make publish-ovsx # Publish to Open VSX Registry"
@echo " all : Clean, install, build, and package"
@echo " clean : Remove build artifacts"
@echo " install : Install dependencies"
@echo " build : Build the extension"
@echo " package : Create VSIX package"
@echo " publish : Publish to BOTH VS Code Marketplace and Open VSX"
@echo " publish-vsx : Publish to VS Code Marketplace only"
@echo " publish-ovsx : Publish to Open VSX Registry only"
@echo " git-tag : Interactive version bump, commit, tag, and push"
Loading