Skip to content

Commit ccaf619

Browse files
committed
test message
1 parent b3ea853 commit ccaf619

1 file changed

Lines changed: 84 additions & 3 deletions

File tree

.github/workflows/update-dependencies.yml

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
# It performs the following steps:
44
# 1. Creates a script to check for the latest versions of all dependencies
55
# 2. Updates package.json with the latest versions
6-
# 3. Removes the yarn.lock file
7-
# 4. Runs yarn install to generate a new lock file with latest versions
8-
# 5. Commits and pushes the changes to the main branch
6+
# 3. Validates and fixes the package.json structure if needed
7+
# 4. Removes the yarn.lock file
8+
# 5. Runs yarn install to generate a new lock file with latest versions
9+
# 6. Commits and pushes the changes to the main branch
910
#
1011
# To run this workflow:
1112
# 1. Go to Actions tab in the repository
@@ -86,6 +87,86 @@ jobs:
8687
- name: Update dependencies
8788
run: node update-deps.js
8889

90+
- name: Create validation script
91+
run: |
92+
cat > validate-package-json.js << 'EOF'
93+
const fs = require('fs');
94+
95+
try {
96+
// Read the package.json file
97+
const packageJsonPath = './package.json';
98+
const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');
99+
100+
console.log('Reading package.json...');
101+
102+
// Parse the JSON to validate it
103+
let packageJson;
104+
try {
105+
packageJson = JSON.parse(packageJsonContent);
106+
console.log('Package.json is valid JSON.');
107+
} catch (parseError) {
108+
console.error('Error parsing package.json:', parseError.message);
109+
process.exit(1);
110+
}
111+
112+
// Check for numeric keys in dependencies or devDependencies
113+
const hasNumericKeys = Object.keys(packageJson.dependencies || {}).some(key => !isNaN(key)) ||
114+
Object.keys(packageJson.devDependencies || {}).some(key => !isNaN(key));
115+
116+
if (hasNumericKeys) {
117+
console.error('Found numeric keys in dependencies or devDependencies. This indicates corruption.');
118+
119+
// Filter out numeric keys
120+
const cleanDependencies = {};
121+
const cleanDevDependencies = {};
122+
123+
Object.entries(packageJson.dependencies || {}).forEach(([key, value]) => {
124+
if (isNaN(key)) {
125+
cleanDependencies[key] = value;
126+
} else {
127+
console.log(`Removing numeric dependency key: ${key}`);
128+
}
129+
});
130+
131+
Object.entries(packageJson.devDependencies || {}).forEach(([key, value]) => {
132+
if (isNaN(key)) {
133+
cleanDevDependencies[key] = value;
134+
} else {
135+
console.log(`Removing numeric devDependency key: ${key}`);
136+
}
137+
});
138+
139+
// Update the package.json object
140+
packageJson.dependencies = cleanDependencies;
141+
packageJson.devDependencies = cleanDevDependencies;
142+
143+
// Write the fixed package.json
144+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
145+
console.log('Fixed package.json and saved.');
146+
} else {
147+
console.log('No numeric keys found. Package.json structure looks good.');
148+
}
149+
150+
// Print the current dependencies
151+
console.log('\nCurrent dependencies:');
152+
Object.entries(packageJson.dependencies || {}).forEach(([key, value]) => {
153+
console.log(` ${key}: ${value}`);
154+
});
155+
156+
console.log('\nCurrent devDependencies:');
157+
Object.entries(packageJson.devDependencies || {}).forEach(([key, value]) => {
158+
console.log(` ${key}: ${value}`);
159+
});
160+
161+
} catch (error) {
162+
console.error('Error:', error.message);
163+
process.exit(1);
164+
}
165+
EOF
166+
167+
- name: Validate package.json
168+
run: node validate-package-json.js
169+
89170
- name: Remove lock file
90171
run: rm -f yarn.lock
91172

0 commit comments

Comments
 (0)