diff --git a/.env.example b/.env.example index 2e74407..90b2a03 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ # Project +IMAGE_TAG=v1.7.0 PROJECT_NAME=sample-website PROJECT_COLOR=#82ed20 diff --git a/.husky/pre-push b/.husky/pre-push index 9bc073c..66f32e1 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,13 +1,16 @@ # Check if we are pushing a tag -if echo "$*" | grep -q "refs/tags/v"; then - echo "🏷️ Tag detected in push, syncing versions..." - pnpm sync-versions - - # Stage the changed package.json files - git add "package.json" "packages/*/package.json" "apps/*/package.json" - - # Amend the tag if it's on the current commit, but this is complex in pre-push. - # Better: Just warn the user that they might need to update the tag if package.json changed. - echo "⚠️ package.json files updated to match tag. Please ensure these changes are part of your tag/commit." -fi +while read local_ref local_sha remote_ref remote_sha +do + if [[ "$remote_ref" == refs/tags/v* ]]; then + TAG=${remote_ref#refs/tags/} + echo "🏷️ Tag detected: $TAG, syncing versions..." + pnpm sync-versions "$TAG" + + # Stage the changed files + git add package.json packages/*/package.json apps/*/package.json .env .env.example + + echo "⚠️ package.json and .env files updated to match tag $TAG." + echo "⚠️ Note: You might need to push again if these changes were not already in your commit/tag." + fi +done diff --git a/apps/sample-website/package.json b/apps/sample-website/package.json index 96fd295..62c6612 100644 --- a/apps/sample-website/package.json +++ b/apps/sample-website/package.json @@ -1,6 +1,6 @@ { "name": "sample-website", - "version": "1.6.0", + "version": "1.7.0", "private": true, "type": "module", "scripts": { diff --git a/docker-compose.yml b/docker-compose.yml index dcebbc3..b9b81d4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,7 +23,7 @@ services: - "traefik.http.services.sample-website.loadbalancer.server.port=3000" directus: - image: registry.infra.mintel.me/mintel/directus:latest + image: registry.infra.mintel.me/mintel/directus:${IMAGE_TAG:-latest} restart: always networks: - infra diff --git a/package.json b/package.json index 28770ab..d1d1b85 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "test": "pnpm -r test", "changeset": "changeset", "version-packages": "changeset version", - "sync-versions": "tsx scripts/sync-versions.ts", + "sync-versions": "tsx scripts/sync-versions.ts --", "cms:push:infra": "./scripts/sync-directus.sh push infra", "cms:pull:infra": "./scripts/sync-directus.sh pull infra", "cms:schema:snapshot": "./scripts/cms-snapshot.sh", @@ -52,7 +52,7 @@ "pino-pretty": "^13.1.3", "require-in-the-middle": "^8.0.1" }, - "version": "1.6.0", + "version": "1.7.0", "pnpm": { "overrides": { "next": "16.1.6", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6da38fa..78da308 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/cli", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/cms-infra/database/data.db b/packages/cms-infra/database/data.db index 5e298f3..30cf45b 100644 Binary files a/packages/cms-infra/database/data.db and b/packages/cms-infra/database/data.db differ diff --git a/packages/cms-infra/package.json b/packages/cms-infra/package.json index 34db64e..600aebc 100644 --- a/packages/cms-infra/package.json +++ b/packages/cms-infra/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/cms-infra", - "version": "1.6.0", + "version": "1.7.0", "private": true, "type": "module", "scripts": { diff --git a/packages/customer-manager/package.json b/packages/customer-manager/package.json index dc90b8c..81cecf9 100644 --- a/packages/customer-manager/package.json +++ b/packages/customer-manager/package.json @@ -2,7 +2,7 @@ "name": "customer-manager", "description": "Custom High-Fidelity Customer & Company Management for Directus", "icon": "supervisor_account", - "version": "1.6.0", + "version": "1.7.0", "keywords": [ "directus", "directus-extension", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 231aa03..c2b0969 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/eslint-config", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/feedback-commander/package.json b/packages/feedback-commander/package.json index 783cf50..115b392 100644 --- a/packages/feedback-commander/package.json +++ b/packages/feedback-commander/package.json @@ -2,7 +2,7 @@ "name": "@mintel/extension-feedback-commander", "description": "Custom High-Fidelity Feedback Management Extension for Directus", "icon": "view_kanban", - "version": "1.6.0", + "version": "1.7.0", "keywords": [ "directus", "directus-extension", diff --git a/packages/gatekeeper/package.json b/packages/gatekeeper/package.json index 185525d..29d498e 100644 --- a/packages/gatekeeper/package.json +++ b/packages/gatekeeper/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/gatekeeper", - "version": "1.6.0", + "version": "1.7.0", "private": true, "type": "module", "scripts": { diff --git a/packages/husky-config/package.json b/packages/husky-config/package.json index fa1e9da..d377968 100644 --- a/packages/husky-config/package.json +++ b/packages/husky-config/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/husky-config", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/infra/docker/docker-compose.template.yml b/packages/infra/docker/docker-compose.template.yml index 92d197e..0694137 100644 --- a/packages/infra/docker/docker-compose.template.yml +++ b/packages/infra/docker/docker-compose.template.yml @@ -53,7 +53,7 @@ services: - "traefik.http.services.${PROJECT_NAME}-gatekeeper.loadbalancer.server.port=3000" directus: - image: registry.infra.mintel.me/mintel/directus:latest + image: registry.infra.mintel.me/mintel/directus:${IMAGE_TAG:-latest} restart: always networks: - infra diff --git a/packages/infra/package.json b/packages/infra/package.json index 8192ac5..643fb12 100644 --- a/packages/infra/package.json +++ b/packages/infra/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/infra", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/next-feedback/package.json b/packages/next-feedback/package.json index 495cad4..c2bdd00 100644 --- a/packages/next-feedback/package.json +++ b/packages/next-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/next-feedback", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/next-observability/package.json b/packages/next-observability/package.json index cdd6f3f..72d9879 100644 --- a/packages/next-observability/package.json +++ b/packages/next-observability/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/next-observability", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/next-utils/package.json b/packages/next-utils/package.json index ad925f8..6e7eed4 100644 --- a/packages/next-utils/package.json +++ b/packages/next-utils/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/next-utils", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/observability/package.json b/packages/observability/package.json index 2ebb499..c6db21e 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/observability", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json index 60ecbd9..9c7222c 100644 --- a/packages/tsconfig/package.json +++ b/packages/tsconfig/package.json @@ -1,6 +1,6 @@ { "name": "@mintel/tsconfig", - "version": "1.6.0", + "version": "1.7.0", "publishConfig": { "access": "public", "registry": "https://npm.infra.mintel.me" diff --git a/scripts/sync-versions.ts b/scripts/sync-versions.ts index aa37af7..c51e6a6 100644 --- a/scripts/sync-versions.ts +++ b/scripts/sync-versions.ts @@ -4,9 +4,15 @@ import * as path from "path"; import { execSync } from "child_process"; /** - * Gets the current version tag from environment or git. + * Gets the current version tag from arguments, environment or git. */ function getVersionTag() { + // 0. Check arguments (passed from husky hook or manual run) + const argTag = process.argv.slice(2).find((arg) => arg.startsWith("v")); + if (argTag) { + return argTag; + } + // 1. Check CI environment variables if ( process.env.GITHUB_REF_NAME && @@ -67,20 +73,50 @@ function updatePkg(pkgPath: string) { console.log(`✅ Updated ${pkg.name} to ${version}`); } +/** + * Updates the IMAGE_TAG in .env files. + */ +function updateEnv(envPath: string) { + if (!fs.existsSync(envPath)) return; + let content = fs.readFileSync(envPath, "utf-8"); + + if (content.includes("IMAGE_TAG=")) { + content = content.replace(/IMAGE_TAG=.*/g, `IMAGE_TAG=${tag}`); + } else { + // Proactively add it if missing + if (content.includes("# Project")) { + content = content.replace("# Project", `# Project\nIMAGE_TAG=${tag}`); + } else { + content = `IMAGE_TAG=${tag}\n${content}`; + } + } + + fs.writeFileSync(envPath, content); + console.log(`✅ Updated IMAGE_TAG in ${envPath} to ${tag}`); +} + // Update root rootPkg.version = version; fs.writeFileSync("package.json", JSON.stringify(rootPkg, null, 2) + "\n"); // Update all packages -const packages = fs.readdirSync(packagesDir); -for (const p of packages) { - updatePkg(path.join(packagesDir, p, "package.json")); +if (fs.existsSync(packagesDir)) { + const packages = fs.readdirSync(packagesDir); + for (const p of packages) { + updatePkg(path.join(packagesDir, p, "package.json")); + } } // Update all apps -const apps = fs.readdirSync(appsDir); -for (const a of apps) { - updatePkg(path.join(appsDir, a, "package.json")); +if (fs.existsSync(appsDir)) { + const apps = fs.readdirSync(appsDir); + for (const a of apps) { + updatePkg(path.join(appsDir, a, "package.json")); + } } +// Update .env files +updateEnv(".env"); +updateEnv(".env.example"); + console.log("✨ All versions synced!");