feat: better builds via releases copy
This commit is contained in:
parent
2c2212b523
commit
d02bc29be0
5 changed files with 104 additions and 5 deletions
80
scripts/copy-releases.ts
Normal file
80
scripts/copy-releases.ts
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
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.");
|
||||
Loading…
Reference in a new issue