Skip to content

Commit

Permalink
Improve and fix volto-update-deps (#5889)
Browse files Browse the repository at this point in the history
  • Loading branch information
sneridagh authored Mar 18, 2024
1 parent c8683f0 commit 7af12a7
Show file tree
Hide file tree
Showing 7 changed files with 1,357 additions and 163 deletions.
5 changes: 4 additions & 1 deletion packages/generator-volto/generators/app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,13 +153,16 @@ Run "npm install -g @plone/generator-volto" to update.`,

// dependencies
let VoltoPackageJSON;
let PloneTypesVersion;
if (voltoVersion === '*') {
VoltoPackageJSON = JSON.parse(
fs.readFileSync(`packages/volto/package.json`, 'utf8'),
);
voltoVersion = VoltoPackageJSON.version;
PloneTypesVersion = await utils.getPloneTypesVersion('main');
} else {
VoltoPackageJSON = await utils.getVoltoPackageJSON(voltoVersion);
PloneTypesVersion = await utils.getPloneTypesVersion(voltoVersion);
}

const VoltoDependencies = VoltoPackageJSON.dependencies;
Expand All @@ -180,7 +183,7 @@ Run "npm install -g @plone/generator-volto" to update.`,
const devDependencies = {
// TODO: find a better way to specify the version of the core devDependencies
// Since they grab "workspace: *" from the volto package.json
'@plone/types': '^1.0.0-alpha.7',
'@plone/types': PloneTypesVersion,
...Object.fromEntries(
Object.entries(VoltoDevDependencies).filter(
([key]) => !key.startsWith('@plone'),
Expand Down
21 changes: 21 additions & 0 deletions packages/generator-volto/generators/app/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,26 @@ async function getVoltoPackageJSON(tag) {
return JSON.parse(requestContent);
}

async function getPloneTypesVersion(tag) {
const url = `https://raw.githubusercontent.com/plone/volto/${tag}/packages/types/package.json`;
const requestContent = await new Promise((resolve, reject) => {
https
.get(url, {}, (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
resolve(data);
});
})
.on('error', (err) => {
reject(err);
});
});
return JSON.parse(requestContent).version;
}

function orderedDependencies(dependencies) {
return Object.keys(dependencies)
.sort()
Expand All @@ -122,5 +142,6 @@ module.exports = {
getLatestCanaryVoltoVersion,
getVoltoYarnLock,
getVoltoPackageJSON,
getPloneTypesVersion,
orderedDependencies,
};
1 change: 1 addition & 0 deletions packages/generator-volto/news/5889.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Improve the generator by getting the `@plone/types` version from GH @sneridagh
1 change: 1 addition & 0 deletions packages/scripts/news/5889.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix volto-update-deps script, remove `@plone` packages from the sync @sneridagh
54 changes: 42 additions & 12 deletions packages/scripts/volto-update-deps.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,26 @@ async function getVoltoPackageJSON(tag) {
return JSON.parse(requestContent);
}

async function getPloneTypesVersion(tag) {
const url = `https://raw.githubusercontent.com/plone/volto/${tag}/packages/types/package.json`;
const requestContent = await new Promise((resolve, reject) => {
https
.get(url, {}, (resp) => {
let data = '';
resp.on('data', (chunk) => {
data += chunk;
});
resp.on('end', () => {
resolve(data);
});
})
.on('error', (err) => {
reject(err);
});
});
return JSON.parse(requestContent).version;
}

function orderedDependencies(dependencies) {
return Object.keys(dependencies)
.sort()
Expand Down Expand Up @@ -55,32 +75,42 @@ async function main() {
const packageJSON = loadPackageJSON(path);
const currentVoltoVersion = packageJSON.dependencies['@plone/volto'];
let voltoPackageJSON;
let ploneTypesVersion;
if (currentVoltoVersion === 'workspace:*') {
voltoPackageJSON = loadPackageJSON('packages/volto');
ploneTypesVersion = await getPloneTypesVersion('main');
} else {
voltoPackageJSON = await getVoltoPackageJSON(currentVoltoVersion);
ploneTypesVersion = await getPloneTypesVersion(currentVoltoVersion);
}

const VoltoDependencies = voltoPackageJSON.dependencies;
const VoltoDevDependencies = voltoPackageJSON.devDependencies;

// Manually add devDependency on @plone/types
packageJSON.devDependencies['@plone/types'] = ploneTypesVersion;

Object.entries(VoltoDevDependencies).forEach(([pkg, version]) => {
if (packageJSON.devDependencies[pkg]) {
packageJSON.devDependencies[pkg] = version;
console.log(`Updated devDependency on ${pkg} to version ${version}`);
} else {
packageJSON.devDependencies[pkg] = version;
console.log(`Added devDependency on ${pkg} to version ${version}`);
if (!pkg.startsWith('@plone')) {
if (packageJSON.devDependencies[pkg]) {
packageJSON.devDependencies[pkg] = version;
console.log(`Updated devDependency on ${pkg} to version ${version}`);
} else {
packageJSON.devDependencies[pkg] = version;
console.log(`Added devDependency on ${pkg} to version ${version}`);
}
}
});

Object.entries(VoltoDependencies).forEach(([pkg, version]) => {
if (packageJSON.dependencies[pkg]) {
packageJSON.dependencies[pkg] = version;
console.log(`Updated dependency on ${pkg} to version ${version}`);
} else {
packageJSON.dependencies[pkg] = version;
console.log(`Added dependency on ${pkg} to version ${version}`);
if (!pkg.startsWith('@plone')) {
if (packageJSON.dependencies[pkg]) {
packageJSON.dependencies[pkg] = version;
console.log(`Updated dependency on ${pkg} to version ${version}`);
} else {
packageJSON.dependencies[pkg] = version;
console.log(`Added dependency on ${pkg} to version ${version}`);
}
}
});

Expand Down
2 changes: 1 addition & 1 deletion packages/volto/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@
"tmp": "0.2.1",
"ts-jest": "^26.4.2",
"ts-loader": "9.4.4",
"typescript": "5.2.2",
"typescript": "^5.4.2",
"use-trace-update": "1.3.2",
"wait-on": "6.0.0",
"webpack": "5.76.1",
Expand Down
Loading

0 comments on commit 7af12a7

Please sign in to comment.