Skip to content

Commit 4c4c8bd

Browse files
committed
add script to bump dependencies
1 parent 1d36238 commit 4c4c8bd

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

scripts/update_dependencies.js

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/env node
2+
3+
const fs = require('fs');
4+
const path = require('path');
5+
6+
async function getLatestVersion(packageName) {
7+
const https = require('https');
8+
9+
return new Promise((resolve, reject) => {
10+
const url = `https://registry.npmjs.org/${packageName}/latest`;
11+
const request = https.get(url, { timeout: 30000 }, (response) => {
12+
let data = '';
13+
response.on('data', (chunk) => data += chunk);
14+
response.on('end', () => {
15+
try {
16+
if (response.statusCode === 200) {
17+
const packageData = JSON.parse(data);
18+
resolve(packageData.version);
19+
} else {
20+
console.warn(`Warning: Could not get latest version for ${packageName}: HTTP ${response.statusCode}`);
21+
resolve(null);
22+
}
23+
} catch (parseError) {
24+
console.warn(`Warning: Could not parse response for ${packageName}: ${parseError.message}`);
25+
resolve(null);
26+
}
27+
});
28+
});
29+
30+
request.on('error', (requestError) => {
31+
console.warn(`Warning: Could not get latest version for ${packageName}: ${requestError.message}`);
32+
resolve(null);
33+
});
34+
35+
request.on('timeout', () => {
36+
request.destroy();
37+
console.warn(`Warning: Timeout getting latest version for ${packageName}`);
38+
resolve(null);
39+
});
40+
});
41+
}
42+
43+
async function main() {
44+
const packageJsonPath = path.join('aws-distro-opentelemetry-node-autoinstrumentation', 'package.json');
45+
46+
try {
47+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
48+
let updated = false;
49+
50+
const dependencies = packageJson.dependencies || {};
51+
const otelPackages = Object.keys(dependencies).filter(pkg => pkg.startsWith('@opentelemetry/'));
52+
53+
for (const packageName of otelPackages) {
54+
const latestVersion = await getLatestVersion(packageName);
55+
if (latestVersion) {
56+
const currentVersion = dependencies[packageName];
57+
58+
if (currentVersion !== latestVersion) {
59+
packageJson.dependencies[packageName] = latestVersion;
60+
updated = true;
61+
console.log(`Updated ${packageName}: ${currentVersion}${latestVersion}`);
62+
} else {
63+
console.log(`${packageName} already at latest version: ${latestVersion}`);
64+
}
65+
}
66+
}
67+
68+
if (updated) {
69+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
70+
console.log('Dependencies updated successfully');
71+
} else {
72+
console.log('No OpenTelemetry dependencies needed updating');
73+
}
74+
75+
} catch (fileError) {
76+
console.error(`Error updating dependencies: ${fileError.message}`);
77+
process.exit(1);
78+
}
79+
}
80+
81+
if (require.main === module) {
82+
main().catch(console.error);
83+
}

0 commit comments

Comments
 (0)