@jakubmazanec/carson-templates 3.1.3 → 3.2.0-next.e3084e5a
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
|
@@ -45,9 +45,10 @@ jobs:
|
|
|
45
45
|
uses: actions/github-script@v6
|
|
46
46
|
with:
|
|
47
47
|
script: |
|
|
48
|
-
let {
|
|
48
|
+
let {promises: fs} = require('node:fs');
|
|
49
|
+
let path = require('node:path');
|
|
49
50
|
|
|
50
|
-
async function
|
|
51
|
+
async function getProjects(files) {
|
|
51
52
|
let names = [];
|
|
52
53
|
|
|
53
54
|
for (let file of files) {
|
|
@@ -59,19 +60,30 @@ jobs:
|
|
|
59
60
|
return names;
|
|
60
61
|
}
|
|
61
62
|
|
|
62
|
-
async function createChangeset(fileName,
|
|
63
|
+
async function createChangeset(fileName, dependencyBumps, projects) {
|
|
63
64
|
let message = '';
|
|
64
65
|
|
|
65
|
-
for (let [
|
|
66
|
-
message =
|
|
67
|
-
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 =
|
|
73
|
-
|
|
74
|
-
|
|
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');
|
|
75
87
|
|
|
76
88
|
await fs.writeFile(fileName, `---\n${header}\n---\n${message.trim()}\n`);
|
|
77
89
|
}
|
|
@@ -80,7 +92,7 @@ jobs:
|
|
|
80
92
|
let bumps = new Map();
|
|
81
93
|
|
|
82
94
|
for (let file of files) {
|
|
83
|
-
let {
|
|
95
|
+
let {stdout: changes} = await exec.getExecOutput('git', ['show', file]);
|
|
84
96
|
|
|
85
97
|
for (let change of changes.split('\n')) {
|
|
86
98
|
if (!change.startsWith('+ ')) {
|
|
@@ -96,6 +108,26 @@ jobs:
|
|
|
96
108
|
return bumps;
|
|
97
109
|
}
|
|
98
110
|
|
|
111
|
+
async function getProjectsUsingCarsonTemplates(dir = process.cwd(), result = []) {
|
|
112
|
+
let entries = await fs.readdir(dir, {withFileTypes: true});
|
|
113
|
+
|
|
114
|
+
for (let entry of entries) {
|
|
115
|
+
let fullPath = path.join(dir, entry.name);
|
|
116
|
+
|
|
117
|
+
if (entry.isDirectory()) {
|
|
118
|
+
if (entry.name === '.carson' && dir !== process.cwd()) {
|
|
119
|
+
let packageJson = JSON.parse(await fs.readFile(path.join(dir, 'package.json'), 'utf8'));
|
|
120
|
+
|
|
121
|
+
result.push(packageJson.name);
|
|
122
|
+
} else {
|
|
123
|
+
await getProjectsUsingCarsonTemplates(fullPath, result);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
|
|
99
131
|
let diffOutput = await exec.getExecOutput('git diff --name-only HEAD~1');
|
|
100
132
|
let diffFiles = diffOutput.stdout.split('\n');
|
|
101
133
|
|
|
@@ -106,11 +138,28 @@ jobs:
|
|
|
106
138
|
}
|
|
107
139
|
|
|
108
140
|
let files = diffFiles
|
|
109
|
-
.filter((file) => file !== 'package.json') // skip
|
|
141
|
+
.filter((file) => file !== 'package.json') // skip workspace package.json
|
|
142
|
+
.filter((file) => file.includes('package.json'));
|
|
143
|
+
let filesWithWorkspace = diffFiles
|
|
110
144
|
.filter((file) => file.includes('package.json'));
|
|
111
|
-
let
|
|
145
|
+
let {stdout: shortHash} = await exec.getExecOutput('git rev-parse --short HEAD');
|
|
146
|
+
let changesetName = `.changeset/renovate-${shortHash.trim()}.md`;
|
|
147
|
+
let projects = await getProjects(files);
|
|
148
|
+
let dependencyBumpsWithWorkspace = await getBumps(filesWithWorkspace);
|
|
149
|
+
|
|
150
|
+
if (
|
|
151
|
+
!projects.length &&
|
|
152
|
+
dependencyBumpsWithWorkspace.size === 1 &&
|
|
153
|
+
dependencyBumpsWithWorkspace.has('<%- TEMPLATE_PACKAGE_NAME %>')
|
|
154
|
+
) {
|
|
155
|
+
projects = await getProjectsUsingCarsonTemplates();
|
|
112
156
|
|
|
113
|
-
|
|
157
|
+
let dependencyBumps = await getBumps(filesWithWorkspace);
|
|
158
|
+
|
|
159
|
+
await createChangesetForCarsonTemplates(changesetName, dependencyBumps, projects);
|
|
160
|
+
|
|
161
|
+
return;
|
|
162
|
+
} else if (!projects.length) {
|
|
114
163
|
console.log('No package.json changes to published packages, skipping...');
|
|
115
164
|
|
|
116
165
|
await exec.exec('npx', ['changeset', '--empty']);
|
|
@@ -118,13 +167,9 @@ jobs:
|
|
|
118
167
|
return;
|
|
119
168
|
}
|
|
120
169
|
|
|
121
|
-
let
|
|
122
|
-
'git rev-parse --short HEAD',
|
|
123
|
-
);
|
|
124
|
-
let fileName = `.changeset/renovate-${shortHash.trim()}.md`;
|
|
125
|
-
let packageBumps = await getBumps(files);
|
|
170
|
+
let dependencyBumps = await getBumps(files);
|
|
126
171
|
|
|
127
|
-
await createChangeset(
|
|
172
|
+
await createChangeset(changesetName, dependencyBumps, projects);
|
|
128
173
|
|
|
129
174
|
- name: Update Carson
|
|
130
175
|
run: |
|