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