@payfit/nx-core 5.2.5 โ†’ 5.3.0-ephemeral-labels-executor.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const auth_app_1 = require("@octokit/auth-app");
4
- const rest_1 = require("@octokit/rest");
5
3
  const yaml = require("yaml");
6
4
  const logger_1 = require("../../utils/common/logger");
5
+ const octokit_1 = require("../../utils/common/octokit");
7
6
  const argocdOverride_1 = require("./argocdOverride");
8
7
  const kargoPolicy_1 = require("./kargoPolicy");
9
8
  function readFileYamlContent(file) {
@@ -27,25 +26,9 @@ function readFileYamlContent(file) {
27
26
  throw new Error(`Failed to parse YAML file: ${error}`);
28
27
  }
29
28
  }
30
- function getEnvVar(name) {
31
- const value = process.env[name];
32
- if (!value) {
33
- throw new Error(`Missing env var ${name}`);
34
- }
35
- return value;
36
- }
37
29
  const runExecutor = async (options) => {
38
30
  logger_1.consola.box(`Start preview deploy switch for ${options.targetAppName} to target branch ${options.targetBranchName} on the ${options.targetEnv} env`);
39
- const octokit = process.env.GITHUB_TOKEN
40
- ? new rest_1.Octokit({ auth: process.env.GITHUB_TOKEN })
41
- : new rest_1.Octokit({
42
- authStrategy: auth_app_1.createAppAuth,
43
- auth: {
44
- appId: getEnvVar('GITHUB_APP_ID'),
45
- privateKey: getEnvVar('GITHUB_PRIVATE_KEY'),
46
- installationId: getEnvVar('GITHUB_INSTALLATION_ID'),
47
- },
48
- });
31
+ const octokit = (0, octokit_1.OctokitAuth)();
49
32
  const argocdOverridePath = `apps/${options.targetAppName}/${options.targetEnv}/.argocd-override.yaml`;
50
33
  const kargoPolicyPath = `.kargo/policy.yaml`;
51
34
  const message = `chore(${options.targetAppName}): switch deployment branch to ${options.targetBranchName} on ${options.targetEnv}`;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/preview-deploy/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/preview-deploy/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ExecutorContext } from '@nx/devkit';
2
+ import { Octokit } from '@octokit/rest';
3
+ import { PreviewLabelsExecutorOptions, PreviewLabelsExecutorSchema } from './schema';
4
+ export declare function getDeterministicColorFromName(name: string): string;
5
+ export declare function managePreviewLabels(projectList: string[], octokit: Octokit, owner: string, repo: string): Promise<void>;
6
+ declare const runExecutor: (options: PreviewLabelsExecutorOptions, context: ExecutorContext) => Promise<PreviewLabelsExecutorSchema>;
7
+ export default runExecutor;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeterministicColorFromName = getDeterministicColorFromName;
4
+ exports.managePreviewLabels = managePreviewLabels;
5
+ const github_1 = require("../../utils/common/github");
6
+ const logger_1 = require("../../utils/common/logger");
7
+ const octokit_1 = require("../../utils/common/octokit");
8
+ function getDeterministicColorFromName(name) {
9
+ let hash = 0;
10
+ for (let i = 0; i < name.length; i++) {
11
+ hash = name.charCodeAt(i) + ((hash << 5) - hash);
12
+ }
13
+ const hex = (hash >>> 0).toString(16).slice(-6).padStart(6, '0');
14
+ const r = parseInt(hex.slice(0, 2), 16);
15
+ const g = parseInt(hex.slice(2, 4), 16);
16
+ const b = parseInt(hex.slice(4, 6), 16);
17
+ return hex;
18
+ }
19
+ function normalizeProjectName(name) {
20
+ return name.replace(/^@payfit\//, '');
21
+ }
22
+ async function managePreviewLabels(projectList, octokit, owner, repo) {
23
+ // Get existing labels from the repository
24
+ const { data: existingLabels } = await octokit.rest.issues.listLabelsForRepo({
25
+ owner,
26
+ repo,
27
+ });
28
+ // Create a set of expected labels based on the application list
29
+ const expectedLabels = new Set(projectList.map(app => `:eyes:/${app}`));
30
+ // Find existing preview labels (labels that start with :eyes:)
31
+ const existingPreviewLabels = existingLabels.filter(label => label.name.startsWith(':eyes:/'));
32
+ // Add missing labels
33
+ for (const expectedLabel of expectedLabels) {
34
+ const exists = existingPreviewLabels.some(label => label.name === expectedLabel);
35
+ if (!exists) {
36
+ logger_1.consola.info(`Adding label: ${expectedLabel}`);
37
+ const appName = expectedLabel.replace(':eyes:/', '');
38
+ const color = getDeterministicColorFromName(appName);
39
+ await octokit.rest.issues.createLabel({
40
+ owner,
41
+ repo,
42
+ name: expectedLabel,
43
+ color,
44
+ description: `Preview label for ${expectedLabel.replace(':eyes:/', '')} application`,
45
+ });
46
+ }
47
+ }
48
+ // Remove labels that are no longer needed
49
+ for (const existingLabel of existingPreviewLabels) {
50
+ if (!expectedLabels.has(existingLabel.name)) {
51
+ logger_1.consola.info(`Removing label: ${existingLabel.name}`);
52
+ await octokit.rest.issues.deleteLabel({
53
+ owner,
54
+ repo,
55
+ name: existingLabel.name,
56
+ });
57
+ }
58
+ }
59
+ }
60
+ const runExecutor = async (options, context) => {
61
+ try {
62
+ logger_1.consola.info('Starting preview labels management');
63
+ // Extract application names from the list
64
+ const applicationNames = options.projectList.map(app => typeof app === 'string' ? app : app.name).map(normalizeProjectName);
65
+ // Filter out applications that don't exist in the workspace
66
+ const projectsMap = context.projectsConfigurations?.projects || {};
67
+ const normalizedProjectNames = new Set(Object.keys(projectsMap).map(normalizeProjectName));
68
+ const validApplicationNames = applicationNames.filter(appName => {
69
+ const exists = normalizedProjectNames.has(appName);
70
+ if (!exists) {
71
+ logger_1.consola.warn(`Project '${appName}' not found in workspace, skipping label creation`);
72
+ }
73
+ return exists;
74
+ });
75
+ const octokit = (0, octokit_1.OctokitAuth)();
76
+ await managePreviewLabels(validApplicationNames, octokit, 'PayFit', await (0, github_1.getGitRepositoryName)());
77
+ logger_1.consola.success('Preview labels management completed successfully');
78
+ return {
79
+ success: true,
80
+ };
81
+ }
82
+ catch (error) {
83
+ logger_1.consola.error('Preview labels management failed:', error);
84
+ return {
85
+ success: false,
86
+ };
87
+ }
88
+ };
89
+ exports.default = runExecutor;
90
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/executors/preview-labels/executor.ts"],"names":[],"mappings":";;AAWA,sEAUC;AAMD,kDAkDC;AA1ED,sDAAgE;AAChE,sDAAmD;AACnD,wDAAwD;AAMxD,SAAgB,6BAA6B,CAAC,IAAY;IACxD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAClD,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAChE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACvC,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,WAAqB,EACrB,OAAgB,EAChB,KAAa,EACb,IAAY;IAEZ,0CAA0C;IAC1C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC3E,KAAK;QACL,IAAI;KACL,CAAC,CAAA;IAEF,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAA;IAEvE,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CACjC,CAAA;IAED,qBAAqB;IACrB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CACvC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CACtC,CAAA;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,gBAAO,CAAC,IAAI,CAAC,iBAAiB,aAAa,EAAE,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;YACpD,MAAM,KAAK,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAA;YACpD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBACpC,KAAK;gBACL,IAAI;gBACJ,IAAI,EAAE,aAAa;gBACnB,KAAK;gBACL,WAAW,EAAE,qBAAqB,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,cAAc;aACrF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,aAAa,IAAI,qBAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,gBAAO,CAAC,IAAI,CAAC,mBAAmB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;YACrD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBACpC,KAAK;gBACL,IAAI;gBACJ,IAAI,EAAE,aAAa,CAAC,IAAI;aACzB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAG2B,KAAK,EAC/C,OAAqC,EACrC,OAAwB,EACxB,EAAE;IACF,IAAI,CAAC;QACH,gBAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAElD,0CAA0C;QAC1C,MAAM,gBAAgB,GACpB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAC5B,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,GAAW,CAAC,IAAI,CAEpD,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QAE3B,4DAA4D;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,sBAAsB,EAAE,QAAQ,IAAI,EAAE,CAAA;QAClE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CACnD,CAAA;QACD,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC9D,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,gBAAO,CAAC,IAAI,CACV,YAAY,OAAO,mDAAmD,CACvE,CAAA;YACH,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAA,qBAAW,GAAE,CAAA;QAE7B,MAAM,mBAAmB,CACvB,qBAAqB,EACrB,OAAO,EACP,QAAQ,EACR,MAAM,IAAA,6BAAoB,GAAE,CAC7B,CAAA;QAED,gBAAO,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAA;QAEnE,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;QACzD,OAAO;YACL,OAAO,EAAE,KAAK;SACf,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "version": 2,
4
+ "title": "Preview labels",
5
+ "description": "Use it to setup application labels from GHA",
6
+ "type": "object",
7
+ "properties": {
8
+ "projectList": {
9
+ "type": "array",
10
+ "items": {
11
+ "type": "string"
12
+ },
13
+ "description": "List of applications to setup labels for"
14
+ }
15
+ },
16
+ "required": ["projectList"]
17
+ }
package/dist/src/index.js CHANGED
@@ -108,6 +108,14 @@ async function createNodesInternal(configFilePath, options, _context) {
108
108
  description: previewDeployConfig.description,
109
109
  },
110
110
  };
111
+ const previewLabelsConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/preview-labels/schema.json'));
112
+ targets['preview-labels'] = {
113
+ executor: '@payfit/nx-core:preview-labels',
114
+ cache: false,
115
+ metadata: {
116
+ description: previewLabelsConfig.description,
117
+ },
118
+ };
111
119
  const releaseConfig = (0, devkit_1.readJsonFile)((0, path_1.join)(__dirname, '/executors/release/schema.json'));
112
120
  targets['release'] = {
113
121
  executor: '@payfit/nx-core:release',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -7,17 +7,8 @@ const { promisify } = require('util')
7
7
 
8
8
  const execAsync = promisify(exec)
9
9
 
10
- // Configuration (can be overridden via CLI flags)
11
- const NX_CORE_VERSION = '5.2.4'
12
- const NX_VERSION = '22.0.2' // e.g. '21.3.11'
13
- const CHANGELOG_MODE = 'combined' // 'combined' | 'raw'
14
-
15
- // Read optional Jira ticket URL from env only
16
- const JIRA_TICKET_URL = undefined
17
-
18
- // Collect PR URLs created during this run
19
- const CREATED_PR_URLS = []
20
-
10
+ // Configuration
11
+ const NX_CORE_VERSION = '4.60.1'
21
12
  const REPOSITORIES = [
22
13
  'authorization',
23
14
  'company-lifecycle',
@@ -31,7 +22,6 @@ const REPOSITORIES = [
31
22
  'jetlang',
32
23
  'organization-structure',
33
24
  'payfit-domains',
34
- 'payroll',
35
25
  'talent-management',
36
26
  'time-absences',
37
27
  ]
@@ -78,208 +68,117 @@ async function run(command, cwd = process.cwd()) {
78
68
  }
79
69
  }
80
70
 
81
- // Check if @payfit/nx-core in package.json needs update
82
- async function needsNxCoreUpdate(repoPath) {
71
+ // Check if package.json exists and needs update
72
+ async function needsUpdate(repoPath) {
83
73
  try {
84
74
  const packageJsonPath = path.join(repoPath, 'package.json')
85
75
  const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'))
86
76
  const currentVersion = packageJson.devDependencies?.['@payfit/nx-core']
87
77
 
88
78
  if (!currentVersion) {
89
- console.log(`โ„น @payfit/nx-core not found in devDependencies`)
79
+ console.log(` โ„น @payfit/nx-core not found in devDependencies`)
90
80
  return { needsUpdate: false, currentVersion: null }
91
81
  }
92
82
 
93
83
  if (compareVersions(currentVersion, NX_CORE_VERSION) === 0) {
94
- console.log(`โ„น Already on version ${NX_CORE_VERSION}`)
95
- return { needsUpdate: false, currentVersion }
96
- }
97
-
98
- console.log(
99
- `๐Ÿ“ฆ Current version: ${currentVersion}, target: ${NX_CORE_VERSION}`,
100
- )
101
- return { needsUpdate: true, currentVersion }
102
- } catch (error) {
103
- console.error(`โŒ Could not read package.json: ${error.message}`)
104
- return { needsUpdate: false, currentVersion: null }
105
- }
106
- }
107
-
108
- // Check if Nx in package.json needs update
109
- async function needsNxUpdate(repoPath) {
110
- if (!NX_VERSION) {
111
- return { needsUpdate: false, currentVersion: null }
112
- }
113
- try {
114
- const packageJsonPath = path.join(repoPath, 'package.json')
115
- const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'))
116
- const currentVersion =
117
- packageJson.devDependencies?.['nx'] ?? packageJson.dependencies?.['nx']
118
-
119
- if (!currentVersion) {
120
- console.log(`โ„น nx not found in package.json`)
121
- return { needsUpdate: false, currentVersion: null }
122
- }
123
-
124
- if (compareVersions(currentVersion, NX_VERSION) === 0) {
125
- console.log(`โ„น Nx already on version ${NX_VERSION}`)
84
+ console.log(` โ„น Already on version ${NX_CORE_VERSION}`)
126
85
  return { needsUpdate: false, currentVersion }
127
86
  }
128
87
 
129
88
  console.log(
130
- `๐Ÿ“ฆ Nx current version: ${currentVersion}, target: ${NX_VERSION}`,
89
+ ` ๐Ÿ“ฆ Current version: ${currentVersion}, target: ${NX_CORE_VERSION}`,
131
90
  )
132
91
  return { needsUpdate: true, currentVersion }
133
92
  } catch (error) {
134
- console.error(`โŒ Could not read package.json for Nx: ${error.message}`)
93
+ console.error(` โŒ Could not read package.json: ${error.message}`)
135
94
  return { needsUpdate: false, currentVersion: null }
136
95
  }
137
96
  }
138
97
 
139
98
  // Process a single repository
140
99
  async function processRepo(repoName) {
141
- console.log(`๐Ÿš€ Processing ${repoName}`)
100
+ console.log(`\n๐Ÿš€ Processing ${repoName}`)
142
101
 
143
102
  const repoPath = path.join(WORK_DIR, repoName)
144
103
 
145
104
  try {
146
105
  // Clone repo
147
- console.log(`๐Ÿ“ฅ Cloning repository...`)
106
+ console.log(` ๐Ÿ“ฅ Cloning repository...`)
148
107
  await run(
149
108
  `git clone https://github.com/PayFit/${repoName}.git ${repoPath}`,
150
109
  WORK_DIR,
151
110
  )
152
111
 
153
- // Check if updates needed
154
- const [nxCoreUpdateInfo, nxUpdateInfo] = await Promise.all([
155
- needsNxCoreUpdate(repoPath),
156
- needsNxUpdate(repoPath),
157
- ])
158
- if (!nxCoreUpdateInfo.needsUpdate && !nxUpdateInfo.needsUpdate) {
159
- console.log(`โญ๏ธ Skipping ${repoName} - no update needed`)
112
+ // Check if update needed
113
+ const updateInfo = await needsUpdate(repoPath)
114
+ if (!updateInfo.needsUpdate) {
115
+ console.log(` โญ๏ธ Skipping ${repoName} - no update needed`)
160
116
  return
161
117
  }
162
118
 
163
- // Get changelogs between current and target version (nx-core only)
164
- const releaseNotes = nxCoreUpdateInfo.needsUpdate
165
- ? await getChangelogBetweenVersions(
166
- nxCoreUpdateInfo.currentVersion,
167
- NX_CORE_VERSION,
168
- )
169
- : ''
119
+ // Get changelogs between current and target version
120
+ const releaseNotes = await getChangelogBetweenVersions(
121
+ updateInfo.currentVersion,
122
+ NX_CORE_VERSION,
123
+ )
170
124
 
171
125
  // Create branch
172
- const branchNameParts = []
173
- if (nxCoreUpdateInfo.needsUpdate)
174
- branchNameParts.push(`nx-core-v${NX_CORE_VERSION}`)
175
- if (nxUpdateInfo.needsUpdate) branchNameParts.push(`nx-v${NX_VERSION}`)
176
- const branchName = branchNameParts.join('-') || `nx-maintenance`
177
- console.log(`๐ŸŒฟ Creating branch ${branchName}`)
126
+ const branchName = `nx-core-v${NX_CORE_VERSION}`
127
+ console.log(` ๐ŸŒฟ Creating branch ${branchName}`)
178
128
  await run('git checkout main', repoPath)
179
129
  await run(`git checkout -b ${branchName}`, repoPath)
180
130
 
181
131
  // Install dependencies and migrate
182
- console.log(`๐Ÿ“ฆ Installing dependencies...`)
132
+ console.log(` ๐Ÿ“ฆ Installing dependencies...`)
183
133
  await run('yarn', repoPath)
184
134
 
185
- // Plan migrations
186
- if (nxUpdateInfo.needsUpdate) {
187
- console.log(`๐Ÿ”„ Planning Nx migration to version ${NX_VERSION}...`)
188
- await run(`yarn nx migrate 'nx@${NX_VERSION}'`, repoPath)
189
- }
190
- if (nxCoreUpdateInfo.needsUpdate) {
191
- console.log(
192
- `๐Ÿ”„ Planning nx-core migration to version ${NX_CORE_VERSION}...`,
193
- )
194
- await run(
195
- `yarn nx migrate '@payfit/nx-core@${NX_CORE_VERSION}'`,
196
- repoPath,
197
- )
198
- }
135
+ console.log(` ๐Ÿ”„ Migrating nx-core to version ${NX_CORE_VERSION}...`)
136
+ await run(`yarn nx migrate '@payfit/nx-core@${NX_CORE_VERSION}'`, repoPath)
199
137
 
200
- console.log(`๐Ÿ“ฆ Installing dependencies after migration...`)
138
+ console.log(` ๐Ÿ“ฆ Installing dependencies after migration...`)
201
139
  await run('yarn', repoPath)
202
140
 
203
- console.log(`๐Ÿ“ฆ Run migrations...`)
141
+ console.log(` ๐Ÿ“ฆ Run migrations...`)
204
142
  await run(`yarn nx migrate --run-migrations --ifExists`, repoPath)
205
143
 
206
- // If targeting Nx >= 22, ensure nx.json release.version.updateDependents = "auto"
207
- if (nxUpdateInfo.needsUpdate && NX_VERSION) {
208
- const major = parseInt(extractVersion(NX_VERSION).split('.')[0], 10) || 0
209
- if (major >= 22) {
210
- console.log(
211
- `๐Ÿ”ง Ensuring nx.json has release.version.updateDependents = "auto" for Nx >= 22...`,
212
- )
213
- const nxJsonChanged = await ensureUpdateDependentsAuto(repoPath)
214
- if (nxJsonChanged) {
215
- console.log('๐Ÿงน Formatting workspace (npx nx format)...')
216
- await run('npx nx format', repoPath)
217
- }
218
- }
219
- }
220
-
221
144
  // Stage, commit and push
222
- console.log(`๐Ÿ“ Staging and committing changes...`)
145
+ console.log(` ๐Ÿ“ Staging and committing changes...`)
223
146
  await run('git add .', repoPath)
224
- const commitParts = []
225
- if (nxUpdateInfo.needsUpdate) {
226
- commitParts.push(
227
- `chore(nx): update Nx from ${nxUpdateInfo.currentVersion} to ${NX_VERSION}`,
228
- )
229
- }
230
- if (nxCoreUpdateInfo.needsUpdate) {
231
- commitParts.push(
232
- `chore(nx-core): update nx-core from ${nxCoreUpdateInfo.currentVersion} to ${NX_CORE_VERSION}`,
233
- )
234
- }
235
- const commitMessage = commitParts.join('')
236
- await run(`git commit -m ${JSON.stringify(commitMessage)}`, repoPath)
237
- await run(`git push -q origin ${branchName}`, repoPath)
147
+ await run(
148
+ `git commit -m "chore(nx-core): update nx-core from ${updateInfo.currentVersion} to ${NX_CORE_VERSION}"`,
149
+ repoPath,
150
+ )
151
+ await run(`git push origin ${branchName}`, repoPath)
238
152
 
239
153
  // Create PR if it doesn't exist
240
- console.log(`๐Ÿ” Checking for existing pull requests...`)
154
+ console.log(` ๐Ÿ” Checking for existing pull requests...`)
241
155
  const existingPRs = await run(
242
156
  `gh pr list --repo PayFit/${repoName} --head ${branchName} --json number`,
243
157
  )
244
158
  if (JSON.parse(existingPRs).length === 0) {
245
- console.log(`๐Ÿ“‹ Creating pull request...`)
159
+ console.log(` ๐Ÿ“‹ Creating pull request...`)
246
160
 
247
161
  // Create PR body with release notes
248
- const prTitleParts = []
249
- if (nxUpdateInfo.needsUpdate) prTitleParts.push(`Nx to v${NX_VERSION}`)
250
- if (nxCoreUpdateInfo.needsUpdate)
251
- prTitleParts.push(`@payfit/nx-core to v${NX_CORE_VERSION}`)
252
- const prTitle = `chore(nx): update ${prTitleParts.join(' and ')}`
253
-
254
- let prBody = ''
255
- if (nxUpdateInfo.needsUpdate) {
256
- prBody += `Update Nx from ${nxUpdateInfo.currentVersion} to ${NX_VERSION}\n\n`
257
- }
258
- if (nxCoreUpdateInfo.needsUpdate) {
259
- prBody += `Update @payfit/nx-core from ${nxCoreUpdateInfo.currentVersion} to ${NX_CORE_VERSION}\n\n`
260
- prBody += `## Changelog\n\n${releaseNotes}\n`
261
- }
162
+ const prBody = `Update @payfit/nx-core from ${updateInfo.currentVersion} to ${NX_CORE_VERSION}
262
163
 
263
- if (JIRA_TICKET_URL) {
264
- prBody += `\n\nJira: ${JIRA_TICKET_URL}\n`
265
- }
164
+ ## Changelog
165
+
166
+ ${releaseNotes}
167
+ `
266
168
 
267
169
  // Write PR body to a file to preserve formatting (newlines, markdown)
268
170
  const prBodyPath = path.join(repoPath, 'nx-core-pr-body.md')
269
171
  await fs.writeFile(prBodyPath, prBody, 'utf8')
270
172
 
271
- const prUrl = await run(
272
- `gh pr create --repo PayFit/${repoName} --title ${JSON.stringify(
273
- prTitle,
274
- )} --body-file "${prBodyPath}" --head ${branchName}`,
173
+ await run(
174
+ `gh pr create --repo PayFit/${repoName} --title "chore(nx-core): update nx-core from ${updateInfo.currentVersion} to ${NX_CORE_VERSION}" --body-file "${prBodyPath}" --head ${branchName}`,
275
175
  )
276
- if (prUrl) CREATED_PR_URLS.push(prUrl)
277
- console.log(`โœ… Successfully created PR for ${repoName}: ${prUrl}`)
176
+ console.log(` โœ… Successfully created PR for ${repoName}`)
278
177
  } else {
279
- console.log(`โ„น๏ธ PR already exists for ${repoName}`)
178
+ console.log(` โ„น๏ธ PR already exists for ${repoName}`)
280
179
  }
281
180
  } catch (error) {
282
- console.error(`โŒ Failed to process ${repoName}: ${error.message}`)
181
+ console.error(` โŒ Failed to process ${repoName}: ${error.message}`)
283
182
  throw error
284
183
  }
285
184
  }
@@ -288,7 +187,7 @@ async function processRepo(repoName) {
288
187
  async function getChangelogBetweenVersions(currentVersion, targetVersion) {
289
188
  try {
290
189
  console.log(
291
- `๐Ÿ“‹ Fetching changelogs from ${currentVersion} to ${targetVersion}...`,
190
+ ` ๐Ÿ“‹ Fetching changelogs from ${currentVersion} to ${targetVersion}...`,
292
191
  )
293
192
 
294
193
  // Get only nx-core releases from the repository, filtered at CLI level
@@ -323,178 +222,36 @@ async function getChangelogBetweenVersions(currentVersion, targetVersion) {
323
222
 
324
223
  // Fetch detailed release notes for each relevant release
325
224
  console.log(
326
- `๐Ÿ“ Fetching detailed release notes for ${relevantReleases.length} release(s)...`,
225
+ ` ๐Ÿ“ Fetching detailed release notes for ${relevantReleases.length} release(s)...`,
327
226
  )
328
- const releaseEntries = []
227
+ let changelog = ''
329
228
  for (const release of relevantReleases) {
330
229
  try {
331
230
  const releaseBody = await run(
332
231
  `gh release view ${release.tagName} --repo PayFit/nx-common-packages --json body --jq '.body'`,
333
232
  )
334
233
  const body = releaseBody.replace(/^"|"$/g, '') // Remove surrounding quotes from jq output
335
- releaseEntries.push({
336
- tag: release.tagName,
337
- body: body || 'No release notes available.',
338
- })
234
+ changelog += `### ${release.tagName}\n\n`
235
+ changelog += `${body || 'No release notes available.'}\n\n`
339
236
  } catch (error) {
340
237
  console.log(
341
- ` โš ๏ธ Could not fetch release notes for ${release.tagName}: ${error.message}`,
238
+ ` โš ๏ธ Could not fetch release notes for ${release.tagName}: ${error.message}`,
342
239
  )
343
- releaseEntries.push({
344
- tag: release.tagName,
345
- body: 'Release notes could not be retrieved.',
346
- })
240
+ changelog += `### ${release.tagName}\n\n`
241
+ changelog += `Release notes could not be retrieved.\n\n`
347
242
  }
348
243
  }
349
244
 
350
245
  console.log(
351
- `โœ… Retrieved ${relevantReleases.length} nx-core release(s) between versions`,
246
+ ` โœ… Retrieved ${relevantReleases.length} nx-core release(s) between versions`,
352
247
  )
353
-
354
- if (CHANGELOG_MODE === 'raw') {
355
- // Plain concatenation with clear spacing
356
- let raw = ''
357
- for (const entry of releaseEntries) {
358
- raw += `### ${entry.tag}\n\n${entry.body}\n\n`
359
- }
360
- return raw.trim()
361
- }
362
-
363
- // Combined/aggregated changelog
364
- return buildCombinedChangelog(releaseEntries)
248
+ return changelog.trim()
365
249
  } catch (error) {
366
- console.log(`โš ๏ธ Could not fetch release notes: ${error.message}`)
250
+ console.log(` โš ๏ธ Could not fetch release notes: ${error.message}`)
367
251
  return `Release notes could not be retrieved between ${currentVersion} and ${targetVersion}.`
368
252
  }
369
253
  }
370
254
 
371
- // Normalize a section heading to a canonical bucket
372
- function normalizeSection(title) {
373
- const t = String(title).trim().toLowerCase()
374
- if (/breaking|migration/.test(t)) return 'Breaking Changes'
375
- if (/feature/.test(t)) return 'Features'
376
- if (/fix|bug/.test(t)) return 'Bug Fixes'
377
- if (/perf|performance/.test(t)) return 'Performance'
378
- if (/refactor/.test(t)) return 'Refactor'
379
- if (/doc/.test(t)) return 'Docs'
380
- if (/chore/.test(t)) return 'Chore'
381
- if (/revert/.test(t)) return 'Reverts'
382
- return null
383
- }
384
-
385
- // Build a combined changelog from multiple release markdown bodies
386
- function buildCombinedChangelog(entries) {
387
- const sectionOrder = [
388
- 'Breaking Changes',
389
- 'Features',
390
- 'Bug Fixes',
391
- 'Performance',
392
- 'Refactor',
393
- 'Docs',
394
- 'Chore',
395
- 'Reverts',
396
- 'Other Changes',
397
- ]
398
-
399
- const aggregated = new Map()
400
- for (const key of sectionOrder) aggregated.set(key, [])
401
-
402
- for (const { tag, body } of entries) {
403
- const lines = String(body).split('\n')
404
- let current = null
405
- let inCodeBlock = false
406
- let pendingBullet = null
407
-
408
- const flushPending = () => {
409
- if (pendingBullet) {
410
- const bucket = current || 'Other Changes'
411
- aggregated.get(bucket).push(pendingBullet.trim())
412
- pendingBullet = null
413
- }
414
- }
415
-
416
- for (const raw of lines) {
417
- const line = raw.replace(/\r$/, '')
418
-
419
- // Handle fenced code blocks so we don't ingest code as bullets
420
- if (/^```/.test(line.trim())) {
421
- inCodeBlock = !inCodeBlock
422
- continue
423
- }
424
- if (inCodeBlock) continue
425
-
426
- // Headings like ##, ###, ####
427
- const headingMatch = line.match(/^#{2,4}\s+(.+?)\s*$/)
428
- if (headingMatch) {
429
- flushPending()
430
- const canonical = normalizeSection(headingMatch[1])
431
- current = canonical
432
- continue
433
- }
434
-
435
- // Bullet points
436
- const bulletMatch = line.match(/^\s*[-*]\s+(.+)$/)
437
- if (bulletMatch) {
438
- // Flush previous bullet before starting new
439
- flushPending()
440
- pendingBullet = bulletMatch[1]
441
- continue
442
- }
443
-
444
- // Continuation lines for multi-line bullets
445
- if (pendingBullet && line.trim().length > 0) {
446
- pendingBullet += ` ${line.trim()}`
447
- } else if (!pendingBullet && current && line.trim().length > 0) {
448
- // Non-bullet content under a recognized section
449
- aggregated.get(current).push(line.trim())
450
- }
451
- }
452
- flushPending()
453
- }
454
-
455
- // Build markdown
456
- let out = ''
457
- for (const key of sectionOrder) {
458
- if (key === 'Other Changes') continue // discard Other Changes entirely
459
- const items = aggregated.get(key)
460
- if (!items || items.length === 0) continue
461
- out += `#### ${key}\n\n`
462
- for (const item of items) {
463
- out += `- ${item}\n`
464
- }
465
- out += `\n`
466
- }
467
- return out.trim()
468
- }
469
-
470
- // Ensure nx.json has release.version.updateDependents = "auto" for Nx >= 22
471
- async function ensureUpdateDependentsAuto(repoPath) {
472
- const nxJsonPath = path.join(repoPath, 'nx.json')
473
- try {
474
- const content = await fs.readFile(nxJsonPath, 'utf8')
475
- const data = JSON.parse(content)
476
- if (!data.release) data.release = {}
477
- if (!data.release.version) data.release.version = {}
478
- if (data.release.version.updateDependents === undefined) {
479
- data.release.version.updateDependents = 'auto'
480
- await fs.writeFile(
481
- nxJsonPath,
482
- JSON.stringify(data, null, 2) + '\n',
483
- 'utf8',
484
- )
485
- console.log(
486
- '๐Ÿงฉ Set release.version.updateDependents to "auto" in nx.json',
487
- )
488
- return true
489
- }
490
- console.log('โ„น nx.json already has release.version.updateDependents')
491
- return false
492
- } catch (error) {
493
- console.log(`โš ๏ธ Skipped nx.json update: ${error.message}`)
494
- return false
495
- }
496
- }
497
-
498
255
  // Check if gh CLI is installed and user is authenticated
499
256
  async function checkGhCli() {
500
257
  try {
@@ -517,9 +274,7 @@ async function checkGhCli() {
517
274
 
518
275
  // Main function
519
276
  async function main() {
520
- console.log(
521
- `๐ŸŽฏ nx-core Updater - nx-core target ${NX_CORE_VERSION}${NX_VERSION ? `, Nx target ${NX_VERSION}` : ''}`,
522
- )
277
+ console.log(`๐ŸŽฏ nx-core Updater - version ${NX_CORE_VERSION}`)
523
278
  console.log(`๐Ÿ“‹ Processing ${REPOSITORIES.length} repositories`)
524
279
 
525
280
  try {
@@ -534,25 +289,19 @@ async function main() {
534
289
  await fs.mkdir(WORK_DIR, { recursive: true })
535
290
 
536
291
  // Process repositories sequentially
537
- console.log(`๐Ÿ”„ Processing repositories...`)
292
+ console.log(`\n๐Ÿ”„ Processing repositories...`)
538
293
  for (const repo of REPOSITORIES) {
539
294
  await processRepo(repo)
540
295
  }
541
296
 
542
297
  // Cleanup
543
- console.log(`๐Ÿงน Cleaning up work directory...`)
298
+ console.log(`\n๐Ÿงน Cleaning up work directory...`)
544
299
  await fs.rm(WORK_DIR, { recursive: true, force: true }).catch(() => {
545
300
  // ignore error if directory does not exist
546
301
  })
547
- if (CREATED_PR_URLS.length > 0) {
548
- console.log('๐Ÿ”— Created PRs:')
549
- for (const url of CREATED_PR_URLS) {
550
- console.log(`- ${url}`)
551
- }
552
- }
553
- console.log('๐ŸŽ‰ Done!')
302
+ console.log('\n๐ŸŽ‰ Done!')
554
303
  } catch (error) {
555
- console.error(`๐Ÿ’ฅ Script failed: ${error.message}`)
304
+ console.error(`\n๐Ÿ’ฅ Script failed: ${error.message}`)
556
305
  process.exit(1)
557
306
  }
558
307
  }
@@ -0,0 +1 @@
1
+ export declare function getEnvVar(name: string): string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvVar = getEnvVar;
4
+ function getEnvVar(name) {
5
+ const value = process.env[name];
6
+ if (!value) {
7
+ throw new Error(`Missing env var ${name}`);
8
+ }
9
+ return value;
10
+ }
11
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/utils/common/environment.ts"],"names":[],"mappings":";;AAAA,8BAMC;AAND,SAAgB,SAAS,CAAC,IAAY;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Octokit } from '@octokit/rest';
2
+ export declare function OctokitAuth(): Octokit;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OctokitAuth = OctokitAuth;
4
+ const auth_app_1 = require("@octokit/auth-app");
5
+ const rest_1 = require("@octokit/rest");
6
+ const environment_1 = require("./environment");
7
+ function OctokitAuth() {
8
+ if ((0, environment_1.getEnvVar)('GITHUB_TOKEN')) {
9
+ return new rest_1.Octokit({ auth: process.env.GITHUB_TOKEN });
10
+ }
11
+ else {
12
+ return new rest_1.Octokit({
13
+ authStrategy: auth_app_1.createAppAuth,
14
+ auth: {
15
+ appId: (0, environment_1.getEnvVar)('GITHUB_APP_ID'),
16
+ privateKey: (0, environment_1.getEnvVar)('GITHUB_PRIVATE_KEY'),
17
+ installationId: (0, environment_1.getEnvVar)('GITHUB_INSTALLATION_ID'),
18
+ },
19
+ });
20
+ }
21
+ }
22
+ //# sourceMappingURL=octokit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"octokit.js","sourceRoot":"","sources":["../../../../src/utils/common/octokit.ts"],"names":[],"mappings":";;AAKA,kCAaC;AAlBD,gDAAiD;AACjD,wCAAuC;AAEvC,+CAAyC;AAEzC,SAAgB,WAAW;IACzB,IAAI,IAAA,uBAAS,EAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,cAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,cAAO,CAAC;YACjB,YAAY,EAAE,wBAAa;YAC3B,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAA,uBAAS,EAAC,eAAe,CAAC;gBACjC,UAAU,EAAE,IAAA,uBAAS,EAAC,oBAAoB,CAAC;gBAC3C,cAAc,EAAE,IAAA,uBAAS,EAAC,wBAAwB,CAAC;aACpD;SACF,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
package/executors.json CHANGED
@@ -19,6 +19,11 @@
19
19
  "implementation": "./dist/src/executors/preview-deploy/executor",
20
20
  "schema": "./dist/src/executors/preview-deploy/schema.json",
21
21
  "description": "Custom preview-deploy executor"
22
+ },
23
+ "preview-labels": {
24
+ "implementation": "./dist/src/executors/preview-labels/executor",
25
+ "schema": "./dist/src/executors/preview-labels/schema.json",
26
+ "description": "Manage GitHub preview labels for applications"
22
27
  }
23
28
  }
24
29
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payfit/nx-core",
3
- "version": "5.2.5",
3
+ "version": "5.3.0-ephemeral-labels-executor.0",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",