const fs = require('fs');
const path = require('path');
const TOML = require('@iarna/toml');
const newVersion = process.argv[2];
if (!newVersion) {
console.error('错误:未提供版本号 (SEMANTIC_RELEASE_NEXT_RELEASE_VERSION is not set).');
process.exit(1);
}
const cargoTomlPath = path.resolve(process.cwd(), 'Cargo.toml');
try {
if (!fs.existsSync(cargoTomlPath)) {
console.error(`错误:在路径 ${cargoTomlPath} 未找到 Cargo.toml 文件.`);
process.exit(1);
}
console.log(`正在读取 Cargo.toml...`);
const cargoTomlString = fs.readFileSync(cargoTomlPath, 'utf-8');
const cargoToml = TOML.parse(cargoTomlString);
if (!cargoToml.package || typeof cargoToml.package.version === 'undefined') {
console.error('错误:Cargo.toml 文件缺少 [package] 部分或 version 字段.');
process.exit(1);
}
console.log(`找到旧版本: ${cargoToml.package.version}`);
console.log(`正在更新到新版本: ${newVersion}`);
cargoToml.package.version = newVersion;
const newCargoTomlString = TOML.stringify(cargoToml);
fs.writeFileSync(cargoTomlPath, newCargoTomlString);
console.log('Cargo.toml 文件已成功更新!');
} catch (error) {
console.error('处理 Cargo.toml 时发生错误:', error);
process.exit(1);
}