enablement-build-monorepo-version 1.0.14 → 1.0.17
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/index.mjs +76 -79
- package/package.json +4 -4
package/index.mjs
CHANGED
|
@@ -119,6 +119,18 @@ async function main(options) {
|
|
|
119
119
|
const scanlist = [];
|
|
120
120
|
const changedFolders = [];
|
|
121
121
|
|
|
122
|
+
const changeConfig = path.join(options.prefixPath,options.hashFile);
|
|
123
|
+
let previous = {};
|
|
124
|
+
|
|
125
|
+
// make sure hash config file exits
|
|
126
|
+
if(!existsSync(changeConfig)) {
|
|
127
|
+
writeFileSync(changeConfig, "{}", "utf8");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// load previous hashes
|
|
131
|
+
let data = readFileSync(changeConfig, "utf8");
|
|
132
|
+
previous=JSON.parse(data);
|
|
133
|
+
|
|
122
134
|
let children = options.children.replace(/\s/g,",");
|
|
123
135
|
children.split(',').forEach((packageFolder)=>{
|
|
124
136
|
scanlist.push(new Promise((resolve, reject) => {
|
|
@@ -137,99 +149,77 @@ async function main(options) {
|
|
|
137
149
|
current[name]={hash:children[i].hash,...v};
|
|
138
150
|
}
|
|
139
151
|
|
|
140
|
-
|
|
141
|
-
let previous = {};
|
|
152
|
+
if(options.changed || options.version || options.tag) {
|
|
142
153
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
console.log(error);
|
|
152
|
-
reject(error);
|
|
153
|
-
return;
|
|
154
|
+
let dependencies={};
|
|
155
|
+
if(options.dependencies) {
|
|
156
|
+
if(existsSync(options.dependencies)) {
|
|
157
|
+
dependencies = dependencyMap(options.dependencies);
|
|
158
|
+
if(options.debug) console.log('Loaded dependencies\n',JSON.stringify(dependencies));
|
|
159
|
+
} else {
|
|
160
|
+
console.log('\x1b[33m%s\x1b[0m', `Could not load dependency file ${options.dependencies}`);
|
|
161
|
+
}
|
|
154
162
|
}
|
|
155
|
-
previous=JSON.parse(data);
|
|
156
163
|
|
|
157
|
-
|
|
164
|
+
let results = await compare(packageFolder, previous,current,dependencies,options);
|
|
165
|
+
if(options.debug) console.log("COMPARE",JSON.stringify(results));
|
|
158
166
|
|
|
159
|
-
|
|
160
|
-
if(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if(options.debug) console.log('Loaded dependencies\n',JSON.stringify(dependencies));
|
|
164
|
-
} else {
|
|
165
|
-
console.log('\x1b[33m%s\x1b[0m', `Could not load dependency file ${options.dependencies}`);
|
|
166
|
-
}
|
|
167
|
+
for(let i=0;i<results.length;i++) {
|
|
168
|
+
if(results[i].value.changed) {
|
|
169
|
+
changeList.push(results[i].value.name);
|
|
170
|
+
if(changedFolders.indexOf(results[i].value.packageFolder)<0) changedFolders.push(results[i].value.packageFolder);
|
|
167
171
|
}
|
|
172
|
+
}
|
|
168
173
|
|
|
169
|
-
|
|
170
|
-
if(
|
|
171
|
-
|
|
172
|
-
|
|
174
|
+
for(let i=0;i<results.length;i++) {
|
|
175
|
+
if(results[i].value.packageFolder!==packageFolder) continue;
|
|
176
|
+
if(options.version) {
|
|
177
|
+
if(options.debug) console.log(results[i]);
|
|
178
|
+
let safeName = results[i].value.name;
|
|
179
|
+
safeName = safeName.replace(/-/g, '').replace(/_/g, '').replace(/\./g, '');
|
|
173
180
|
if(results[i].value.changed) {
|
|
174
|
-
|
|
175
|
-
if(
|
|
181
|
+
console.log(`##vso[task.setvariable variable=${safeName};isoutput=true;]${results[i].value.version}`);
|
|
182
|
+
if(options.saveVersion) {
|
|
183
|
+
scanlist.push(updateVersion(packageFolder,results[i].value.name,results[i].value.version));
|
|
184
|
+
}
|
|
185
|
+
} else {
|
|
186
|
+
console.log(`##vso[task.setvariable variable=${safeName};isoutput=true;]${results[i].value.previous}`);
|
|
176
187
|
}
|
|
177
188
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
+
if(options.tag) {
|
|
190
|
+
scanlist.push(new Promise((resolve,reject)=>{
|
|
191
|
+
let v = results[i].value.version;
|
|
192
|
+
if(!v) v=getCurrentVersion(options.prefixPath,packageFolder,results[i].value.name)?.version;
|
|
193
|
+
let rev=results[i].value.name+'@'+v;
|
|
194
|
+
v=results[i].value.name+'/'+v;
|
|
195
|
+
exec(`git describe --tags ${v}`, (err, tag, stderr) => {
|
|
196
|
+
if (err) {
|
|
197
|
+
exec(`git tag ${v} -m "${rev}"`, (err, tag, stderr) => {
|
|
198
|
+
if (err) {
|
|
199
|
+
reject(err);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
resolve(rev);
|
|
203
|
+
});
|
|
204
|
+
return;
|
|
189
205
|
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if(options.tag) {
|
|
195
|
-
scanlist.push(new Promise((resolve,reject)=>{
|
|
196
|
-
let v = results[i].value.version;
|
|
197
|
-
if(!v) v=getCurrentVersion(options.prefixPath,packageFolder,results[i].value.name)?.version;
|
|
198
|
-
let rev=results[i].value.name+'@'+v;
|
|
199
|
-
v=results[i].value.name+'/'+v;
|
|
200
|
-
exec(`git describe --tags ${v}`, (err, tag, stderr) => {
|
|
201
|
-
if (err) {
|
|
202
|
-
exec(`git tag ${v} -m "${rev}"`, (err, tag, stderr) => {
|
|
203
|
-
if (err) {
|
|
204
|
-
reject(err);
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
resolve(rev);
|
|
208
|
-
});
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
}));
|
|
213
|
-
}
|
|
206
|
+
});
|
|
207
|
+
}));
|
|
214
208
|
}
|
|
215
209
|
}
|
|
210
|
+
}
|
|
216
211
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
writeFileSync(changeConfig, JSON.stringify(current, null, 2), "utf8");
|
|
228
|
-
console.log('folder hashes written successfully');
|
|
212
|
+
// save current hashes
|
|
213
|
+
if(options.hash) {
|
|
214
|
+
let names = Object.keys(current);
|
|
215
|
+
for(let i=0;i<names.length;i++) {
|
|
216
|
+
if(current[names[i]].packageFolder!==packageFolder) continue;
|
|
217
|
+
let v = getCurrentVersion(options.prefixPath,packageFolder,names[i]);
|
|
218
|
+
current[names[i]].version = v.version;
|
|
219
|
+
current[names[i]].fullName = v.fullName;
|
|
229
220
|
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
});
|
|
221
|
+
}
|
|
222
|
+
resolve("OK");
|
|
233
223
|
})
|
|
234
224
|
.catch(error => {
|
|
235
225
|
return console.error('hashing failed:', error);
|
|
@@ -249,6 +239,13 @@ async function main(options) {
|
|
|
249
239
|
});
|
|
250
240
|
}
|
|
251
241
|
}
|
|
242
|
+
|
|
243
|
+
// write current hashes
|
|
244
|
+
if(options.hash) {
|
|
245
|
+
writeFileSync(changeConfig, JSON.stringify(current, null, 2), "utf8");
|
|
246
|
+
console.log('folder hashes written successfully');
|
|
247
|
+
}
|
|
248
|
+
|
|
252
249
|
mainResolve("DONE");
|
|
253
250
|
},mainreject);
|
|
254
251
|
});
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "enablement-build-monorepo-version",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"description": "This detects changes in the children packages of a monorepo.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./index.mjs",
|
|
7
7
|
"bin": "./index.mjs",
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"author": "Chris Doty",
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"minimatch": "~5.1.2"
|
|
12
|
-
},
|
|
13
10
|
"scripts": {
|
|
14
11
|
"start": "node index.mjs"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"minimatch": "~5.1.2"
|
|
15
15
|
}
|
|
16
16
|
}
|