Skip to content

Commit 1c1d1fa

Browse files
authored
Keep version when updating package json (#831)
* Keep the assignment version when updating `package.json`. * Fix inconsistently generated `package.json` files.
1 parent 8f9cd81 commit 1c1d1fa

5 files changed

Lines changed: 19 additions & 8 deletions

File tree

exercises/scale-generator/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "exercism-javascript",
3-
"description": "Exercism exercises in Javascript.",
43
"version": "2.0.0",
4+
"description": "Exercism exercises in Javascript.",
55
"author": "Katrina Owen",
66
"private": true,
77
"repository": {

exercises/yacht/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "exercism-javascript",
3-
"version":"1.2.0",
3+
"version": "1.2.0",
44
"description": "Exercism exercises in Javascript.",
55
"author": "Katrina Owen",
66
"private": true,

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"name": "exercism-javascript",
3+
"version": null,
34
"description": "Exercism exercises in Javascript.",
45
"author": "Katrina Owen",
56
"private": true,

scripts/helpers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ function cleanUp() {
4545
const SKIP_PACKAGES_FOR_CHECKSUM = ['shelljs', '@babel/node'];
4646

4747
// Filter out some unwanted packages and create package.json for exercises
48-
function createExercisePackageJson() {
48+
function createExercisePackageJson(assignmentVersion) {
4949
const packageFile = shell.cat('package.json').toString();
5050
const packageJson = JSON.parse(packageFile);
5151

52-
delete packageJson['version'];
52+
packageJson['version'] = assignmentVersion;
5353
SKIP_PACKAGES_FOR_CHECKSUM.forEach(pkg => delete packageJson['devDependencies'][pkg]);
5454

5555
const shellStr = new shell.ShellString(JSON.stringify(packageJson, null, 2) + '\n');

scripts/sync

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,30 @@ const shell = require('shelljs');
1313
const assignment = shell.env['ASSIGNMENT'];
1414
const helpers = require('./helpers');
1515

16-
function copyConfig(destination) {
17-
helpers.createExercisePackageJson();
18-
shell.cat('exercise-package.json').to(destination + '/package.json');
16+
function copyConfigForAssignment(assignment) {
17+
const destination = 'exercises/' + assignment;
18+
const assignmentPackageFilename = destination + '/package.json';
19+
const assignmentVersion = getAssignmentVersion(assignmentPackageFilename);
20+
helpers.createExercisePackageJson(assignmentVersion);
21+
shell.cat('exercise-package.json').to(assignmentPackageFilename);
1922
shell.rm('exercise-package.json');
2023

2124
shell.cp('babel.config.js', destination);
2225
shell.cp('.eslintrc', destination);
2326
}
2427

28+
function getAssignmentVersion(assignmentPackageFilename) {
29+
const packageFile = shell.cat(assignmentPackageFilename).toString();
30+
const packageJson = JSON.parse(packageFile);
31+
console.debug(packageJson)
32+
return packageJson['version'];
33+
}
34+
2535
if(assignment) {
2636
shell.echo('Syncing ' + assignment + '...');
2737
copyConfig('exercises/' + assignment);
2838
}
2939
else {
3040
shell.echo('Syncing all assignments...');
31-
helpers.assignments.forEach(assignment => copyConfig('exercises/' + assignment));
41+
helpers.assignments.forEach(copyConfigForAssignment);
3242
}

0 commit comments

Comments
 (0)