@jakubmazanec/carson-templates 3.2.0-unstable.ed26852c → 3.2.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "3.2.0-unstable.ed26852c",
3
+ "version": "3.2.0",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,7 +48,7 @@ jobs:
48
48
  let {promises: fs} = require('node:fs');
49
49
  let path = require('node:path');
50
50
 
51
- async function getPackagesNames(files) {
51
+ async function getProjects(files) {
52
52
  let names = [];
53
53
 
54
54
  for (let file of files) {
@@ -60,16 +60,30 @@ jobs:
60
60
  return names;
61
61
  }
62
62
 
63
- async function createChangeset(fileName, packageBumps, packages) {
63
+ async function createChangeset(fileName, dependencyBumps, projects) {
64
64
  let message = '';
65
65
 
66
- for (let [packageName, bump] of packageBumps) {
67
- message = message + `Dependency \`${packageName}\` updated to version \`${bump}\`.\n`;
66
+ for (let [dependencyName, bump] of dependencyBumps) {
67
+ message = message + `Dependency \`${dependencyName}\` updated to version \`${bump}\`.\n`;
68
68
  }
69
69
 
70
70
  message = message.replace('\n', ' ');
71
71
 
72
- let header = packages.map((packageName) => `'${packageName}': patch`).join('\n');
72
+ let header = projects.map((projectName) => `'${projectName}': patch`).join('\n');
73
+
74
+ await fs.writeFile(fileName, `---\n${header}\n---\n${message.trim()}\n`);
75
+ }
76
+
77
+ async function createChangesetForCarsonTemplates(fileName, dependencyBumps, projects) {
78
+ let message = '';
79
+
80
+ for (let [dependencyName, bump] of dependencyBumps) {
81
+ message = message + `Applies templates from \`${dependencyName}\` updated to version \`${bump}\`.\n`;
82
+ }
83
+
84
+ message = message.replace('\n', ' ');
85
+
86
+ let header = projects.map((projectName) => `'${projectName}': patch`).join('\n');
73
87
 
74
88
  await fs.writeFile(fileName, `---\n${header}\n---\n${message.trim()}\n`);
75
89
  }
@@ -94,19 +108,19 @@ jobs:
94
108
  return bumps;
95
109
  }
96
110
 
97
- async function getPackageUsingCarsonNames(dir = process.cwd(), result = []) {
111
+ async function getProjectsUsingCarsonTemplates(dir = process.cwd(), result = []) {
98
112
  let entries = await fs.readdir(dir, {withFileTypes: true});
99
113
 
100
114
  for (let entry of entries) {
101
115
  let fullPath = path.join(dir, entry.name);
102
116
 
103
117
  if (entry.isDirectory()) {
104
- if (entry.name === '.carson') {
118
+ if (entry.name === '.carson' && dir !== process.cwd()) {
105
119
  let packageJson = JSON.parse(await fs.readFile(path.join(dir, 'package.json'), 'utf8'));
106
120
 
107
121
  result.push(packageJson.name);
108
122
  } else {
109
- await getPackageUsingCarsonNames(fullPath, result);
123
+ await getProjectsUsingCarsonTemplates(fullPath, result);
110
124
  }
111
125
  }
112
126
  }
@@ -124,20 +138,28 @@ jobs:
124
138
  }
125
139
 
126
140
  let files = diffFiles
127
- .filter((file) => file !== 'package.json') // skip root package.json
141
+ .filter((file) => file !== 'package.json') // skip workspace package.json
142
+ .filter((file) => file.includes('package.json'));
143
+ let filesWithWorkspace = diffFiles
128
144
  .filter((file) => file.includes('package.json'));
129
- let packageNames = await getPackagesNames(files);
130
145
  let {stdout: shortHash} = await exec.getExecOutput('git rev-parse --short HEAD');
131
- let fileName = `.changeset/renovate-${shortHash.trim()}.md`;
132
- let packageBumps = await getBumps(files);
146
+ let changesetName = `.changeset/renovate-${shortHash.trim()}.md`;
147
+ let projects = await getProjects(files);
148
+ let dependencyBumpsWithWorkspace = await getBumps(filesWithWorkspace);
133
149
 
134
150
  if (
135
- !packageNames.length &&
136
- packageBumps.size === 1 &&
137
- packageBumps.has('<%- TEMPLATE_PACKAGE_NAME %>')
151
+ !projects.length &&
152
+ dependencyBumpsWithWorkspace.size === 1 &&
153
+ dependencyBumpsWithWorkspace.has('<%- TEMPLATE_PACKAGE_NAME %>')
138
154
  ) {
139
- packageNames = await getPackageUsingCarsonNames();
140
- } else if (!packageNames.length) {
155
+ projects = await getProjectsUsingCarsonTemplates();
156
+
157
+ let dependencyBumps = await getBumps(filesWithWorkspace);
158
+
159
+ await createChangesetForCarsonTemplates(changesetName, dependencyBumps, projects);
160
+
161
+ return;
162
+ } else if (!projects.length) {
141
163
  console.log('No package.json changes to published packages, skipping...');
142
164
 
143
165
  await exec.exec('npx', ['changeset', '--empty']);
@@ -145,8 +167,9 @@ jobs:
145
167
  return;
146
168
  }
147
169
 
148
- await createChangeset(fileName, packageBumps, packageNames);
170
+ let dependencyBumps = await getBumps(files);
149
171
 
172
+ await createChangeset(changesetName, dependencyBumps, projects);
150
173
 
151
174
  - name: Update Carson
152
175
  run: |
@@ -1,160 +0,0 @@
1
- ---
2
- to: '.github/workflows/manual-update-pull-request.yaml'
3
- strategy: overwrite
4
- ---
5
- #
6
- # DO NOT EDIT!
7
- # This file was autogenerated by Carson.
8
- # Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
- #
10
- # Run `npx carson update workspace` to regenerate.
11
- #
12
-
13
- name: Update pull request
14
-
15
- on:
16
- pull_request:
17
- branches:
18
- - development
19
-
20
- jobs:
21
- update_pull_request:
22
- name: Update pull request
23
- if: ${{ (github.actor == 'renovate[bot]' && contains(github.head_ref, 'renovate/')) || event.actor }}
24
- runs-on: ubuntu-latest
25
- timeout-minutes: 15
26
- steps:
27
- - uses: actions/checkout@v4
28
- with:
29
- ref: ${{ github.head_ref }}
30
- token: ${{ secrets.PAT }}
31
- fetch-depth: 0
32
-
33
- - name: Configure git
34
- run: |
35
- git config user.email "bot@mazanec.dev"
36
- git config user.name "Bot"
37
-
38
- - uses: actions/setup-node@v4
39
- with:
40
- node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
41
-
42
- - name: Install packages
43
- run: npm ci
44
-
45
- - name: Generate changeset
46
- uses: actions/github-script@v6
47
- with:
48
- script: |
49
- let {promises: fs} = require('node:fs');
50
- let path = require('node:path');
51
-
52
- async function getPackagesNames(files) {
53
- let names = [];
54
-
55
- for (let file of files) {
56
- let packageJson = JSON.parse(await fs.readFile(file, 'utf8'));
57
-
58
- names.push(packageJson.name);
59
- }
60
-
61
- return names;
62
- }
63
-
64
- async function createChangeset(fileName, packageBumps, packages) {
65
- let message = '';
66
-
67
- for (let [packageName, bump] of packageBumps) {
68
- message = message + `Dependency \`${packageName}\` updated to version \`${bump}\`.\n`;
69
- }
70
-
71
- message = message.replace('\n', ' ');
72
-
73
- let header = packages.map((packageName) => `'${packageName}': patch`).join('\n');
74
-
75
- await fs.writeFile(fileName, `---\n${header}\n---\n${message.trim()}\n`);
76
- }
77
-
78
- async function getBumps(files) {
79
- let bumps = new Map();
80
-
81
- for (let file of files) {
82
- let {stdout: changes} = await exec.getExecOutput('git', ['show', file]);
83
-
84
- for (let change of changes.split('\n')) {
85
- if (!change.startsWith('+ ')) {
86
- continue;
87
- }
88
-
89
- let match = change.match(/"(.*?)"/g);
90
-
91
- bumps.set(match[0].replace(/"/g, ''), match[1].replace(/"/g, ''));
92
- }
93
- }
94
-
95
- return bumps;
96
- }
97
-
98
- async function getPackageUsingCarsonNames(dir = process.cwd(), result = []) {
99
- let entries = await fs.readdir(dir, {withFileTypes: true});
100
-
101
- for (let entry of entries) {
102
- let fullPath = path.join(dir, entry.name);
103
-
104
- if (entry.isDirectory()) {
105
- if (entry.name === '.carson') {
106
- let packageJson = JSON.parse(await fs.readFile(path.join(dir, 'package.json'), 'utf8'));
107
-
108
- result.push(packageJson.name);
109
- } else {
110
- await getPackageUsingCarsonNames(fullPath, result);
111
- }
112
- }
113
- }
114
-
115
- return result;
116
- }
117
-
118
- let diffOutput = await exec.getExecOutput('git diff --name-only HEAD~1');
119
- let diffFiles = diffOutput.stdout.split('\n');
120
-
121
- if (diffFiles.find((diffFile) => diffFile.startsWith('.changeset'))) {
122
- console.log('Changeset already exists, skipping...');
123
-
124
- return;
125
- }
126
-
127
- let files = diffFiles
128
- .filter((file) => file !== 'package.json') // skip root package.json
129
- .filter((file) => file.includes('package.json'));
130
- let packageNames = await getPackagesNames(files);
131
- let {stdout: shortHash} = await exec.getExecOutput('git rev-parse --short HEAD');
132
- let fileName = `.changeset/renovate-${shortHash.trim()}.md`;
133
- let packageBumps = await getBumps(files);
134
-
135
- if (
136
- !packageNames.length &&
137
- packageBumps.size === 1 &&
138
- packageBumps.has('<%- TEMPLATE_PACKAGE_NAME %>')
139
- ) {
140
- packageNames = await getPackageUsingCarsonNames();
141
- } else if (!packageNames.length) {
142
- console.log('No package.json changes to published packages, skipping...');
143
-
144
- await exec.exec('npx', ['changeset', '--empty']);
145
-
146
- return;
147
- }
148
-
149
- await createChangeset(fileName, packageBumps, packageNames);
150
-
151
-
152
- - name: Update Carson
153
- run: |
154
- npm install
155
-
156
- - name: Commit and push changes
157
- run: |
158
- git add . --all
159
- git commit -m"Update"
160
- git push --force