import fs from "fs";
import AdmZip from "adm-zip";
import crypto from "crypto";
import semver from "semver";


// 读取 update.json
const updateJsonPath = "bin/update.json"
const upDataJson = fs.readFileSync("src/updater/update.json", "utf8");
let updata = JSON.parse(upDataJson);

console.log(updata.version);
// updata.version 加1 
updata.version = semver.inc(updata.version, "patch");
 
// 判断有没有bin 文件夹没有，就创建一个，有的话就删除bin中的所有内容
if (!fs.existsSync("bin")) {
  fs.mkdirSync("bin");
} else {
  fs.readdirSync("bin").forEach((file) => {
    fs.unlinkSync(`bin/${file}`);
  });
}

// 判断有没有dist 文件夹，有的话，进去dist中，吧里面所有内容打成一个zip包，名称为123.zip， 同时打印下123.zip 的shasum -a 256 内容
// 检查 dist 文件夹并打包
if (fs.existsSync("dist")) {
  const files = fs.readdirSync("dist");
  const zip = new AdmZip();
  const zipName = `v${updata.version}.zip`;

  zip.addLocalFolder('dist', '');   // 第二个参数 '' 表示把 dist 本身作为根目录
 

  // 保存 ZIP 文件
  const zipPath = `bin/${zipName}`;
  zip.writeZip(zipPath);
  console.log(`ZIP 包已生成: ${zipPath}`);

  // 计算 SHA-256
  const zipData = fs.readFileSync(zipPath);
  const hash = crypto.createHash("sha256").update(zipData).digest("hex");
  console.log(`SHA-256: ${hash}`);

  //  当前时间
  const now = new Date();
  const fmt = now.toISOString()
               .replace('T', ' ')
               .slice(0, 19);
  // 4. 修改 update.json 的 checksum
  updata.releaseDate = fmt
  updata.checksum = hash; // 假设 update.json 有 checksum 字段
  fs.writeFileSync(updateJsonPath, JSON.stringify(updata, null, 2)); // 2 空格缩进
  fs.writeFileSync("src/updater/update.json", JSON.stringify(updata, null, 2)); // 2 空格缩进
  console.log(`已更新 ${updateJsonPath} 的 checksum: ${hash}`);
  
 
} else {
  console.log("dist 文件夹不存在，跳过打包");
}
