VERSION := $(shell node -p "require('./package.json').version")

.DEFAULT_GOAL := build

# ── build ─────────────────────────────────────────────────────────────────────

.PHONY: build
build:                          ## Build extension → dist/extension.js
	npm run compile

.PHONY: watch
watch:                          ## Watch mode (incremental rebuild)
	npm run watch

# ── quality ───────────────────────────────────────────────────────────────────

.PHONY: lint
lint:                           ## Run ESLint
	npm run lint

# ── package & publish ─────────────────────────────────────────────────────────

.PHONY: package
package: build                  ## Package .vsix (v$(VERSION))
	npm run package
	@echo "Packaged: alogin-skills-$(VERSION).vsix"

.PHONY: install
install: package                ## Install extension locally via 'code --install-extension'
	code --install-extension alogin-skills-$(VERSION).vsix --force

.PHONY: publish
publish: package                ## Publish to VS Code Marketplace (v$(VERSION))
	npm run publish

# ── version bump ──────────────────────────────────────────────────────────────

.PHONY: bump-patch
bump-patch:                     ## Bump patch version (0.1.1 → 0.1.2) and commit
	npm version patch --no-git-tag-version
	@$(MAKE) _version-commit

.PHONY: bump-minor
bump-minor:                     ## Bump minor version (0.1.1 → 0.2.0) and commit
	npm version minor --no-git-tag-version
	@$(MAKE) _version-commit

.PHONY: bump-major
bump-major:                     ## Bump major version (0.1.1 → 1.0.0) and commit
	npm version major --no-git-tag-version
	@$(MAKE) _version-commit

.PHONY: _version-commit
_version-commit:
	$(eval NEW_VERSION := $(shell node -p "require('./package.json').version"))
	git add package.json package-lock.json
	git commit -m "chore: bump version to $(NEW_VERSION)"
	git tag v$(NEW_VERSION)
	@echo "Version bumped to $(NEW_VERSION) — run 'git push && git push --tags' to publish"

# ── release ───────────────────────────────────────────────────────────────────

.PHONY: release
release: bump-patch publish     ## Bump patch + publish to Marketplace in one step

# ── clean ─────────────────────────────────────────────────────────────────────

.PHONY: clean
clean:                          ## Remove build artifacts
	rm -rf dist/ *.vsix

# ── help ──────────────────────────────────────────────────────────────────────

.PHONY: help
help:                           ## Show this help
	@grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) \
	  | awk 'BEGIN {FS = ":.*##"}; {printf "  \033[36m%-18s\033[0m %s\n", $$1, $$2}'
