client/scripts/copy-releases.ts
Alois fb742bd068 (feat): add tauth
(fix): formatted
2026-04-14 01:12:34 +02:00

80 lines
2.1 KiB
TypeScript

import {
existsSync,
mkdirSync,
readdirSync,
renameSync,
rmSync,
statSync,
} from "node:fs";
import { join } from "node:path";
import packageJson from "../package.json" with { type: "json" };
const { version } = packageJson;
const releasesDir = join("releases");
// directory
rmSync(releasesDir, { recursive: true, force: true });
mkdirSync(releasesDir, { recursive: true });
// apk
const apkSrc =
"apps/tauri/src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release.apk";
if (existsSync(apkSrc)) {
renameSync(apkSrc, join(releasesDir, `Tensamin-${version}.apk`));
} else {
console.warn(`Skipping .apk: ${apkSrc} does not exist.`);
}
// deb & rpm
const debDir = "apps/tauri/src-tauri/target/release/bundle/deb";
const rpmDir = "apps/tauri/src-tauri/target/release/bundle/rpm";
const moveBundleArtifact = (
sourceDir: string,
extension: ".deb" | ".rpm",
destinationFileName: string,
) => {
if (!existsSync(sourceDir)) {
console.warn(`Skipping ${extension}: ${sourceDir} does not exist.`);
return;
}
const candidates = readdirSync(sourceDir)
.filter((file) => file.endsWith(extension))
.map((file) => {
const filePath = join(sourceDir, file);
return {
file,
filePath,
matchesVersion: file.includes(version),
modifiedAt: statSync(filePath).mtimeMs,
};
})
.sort((a, b) => {
if (a.matchesVersion !== b.matchesVersion) {
return Number(b.matchesVersion) - Number(a.matchesVersion);
}
return b.modifiedAt - a.modifiedAt;
});
const selected = candidates[0];
if (!selected) {
console.warn(`Skipping ${extension}: no files found in ${sourceDir}.`);
return;
}
if (!selected.matchesVersion) {
console.warn(
`Using ${selected.file} for ${extension} even though it does not include version ${version}.`,
);
}
renameSync(selected.filePath, join(releasesDir, destinationFileName));
};
moveBundleArtifact(debDir, ".deb", `Tensamin-${version}.deb`);
moveBundleArtifact(rpmDir, ".rpm", `Tensamin-${version}.rpm`);
console.log("Releases copied successfully.");