ci: fix apk build
All checks were successful
Queue Release Build / prepare (push) Successful in 23s
Deploy Web Apps / deploy (push) Successful in 6m35s
Queue Release Build / build-windows (push) Successful in 27m49s
Queue Release Build / build-linux (push) Successful in 44m3s
Queue Release Build / build-android (push) Successful in 20m59s
Queue Release Build / finalize (push) Successful in 2m40s
All checks were successful
Queue Release Build / prepare (push) Successful in 23s
Deploy Web Apps / deploy (push) Successful in 6m35s
Queue Release Build / build-windows (push) Successful in 27m49s
Queue Release Build / build-linux (push) Successful in 44m3s
Queue Release Build / build-android (push) Successful in 20m59s
Queue Release Build / finalize (push) Successful in 2m40s
This commit is contained in:
@@ -424,12 +424,20 @@ function isDesktopReleaseAsset(filePath) {
|
||||
|| lowerFileName.endsWith('.zip');
|
||||
}
|
||||
|
||||
function isAndroidReleaseAsset(filePath) {
|
||||
return path.basename(filePath).toLowerCase().endsWith('.apk');
|
||||
}
|
||||
|
||||
function collectBuiltAssets(args) {
|
||||
const distElectronDir = path.resolve(process.cwd(), args['dist-electron'] || 'dist-electron');
|
||||
const distServerDir = path.resolve(process.cwd(), args['dist-server'] || 'dist-server');
|
||||
const distAndroidDir = typeof args['dist-android'] === 'string' && args['dist-android'].trim().length > 0
|
||||
? path.resolve(process.cwd(), args['dist-android'])
|
||||
: null;
|
||||
const files = [
|
||||
...collectTopLevelFiles(distElectronDir).filter(isDesktopReleaseAsset),
|
||||
...collectTopLevelFiles(distServerDir)
|
||||
...collectTopLevelFiles(distServerDir),
|
||||
...(distAndroidDir ? collectTopLevelFiles(distAndroidDir).filter(isAndroidReleaseAsset) : [])
|
||||
];
|
||||
|
||||
return [...new Set(files)].sort((left, right) => left.localeCompare(right));
|
||||
@@ -646,9 +654,17 @@ async function main() {
|
||||
}
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
if (require.main === module) {
|
||||
main().catch((error) => {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
|
||||
console.error(`[gitea-release] ${message}`);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
console.error(`[gitea-release] ${message}`);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
collectBuiltAssets,
|
||||
isAndroidReleaseAsset,
|
||||
isDesktopReleaseAsset
|
||||
};
|
||||
|
||||
29
tools/gitea-release.spec.js
Normal file
29
tools/gitea-release.spec.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const os = require('node:os');
|
||||
const path = require('node:path');
|
||||
const { test } = require('node:test');
|
||||
|
||||
const { collectBuiltAssets, isAndroidReleaseAsset } = require('./gitea-release');
|
||||
|
||||
test('isAndroidReleaseAsset matches apk files only', () => {
|
||||
assert.equal(isAndroidReleaseAsset('/tmp/Toju-1.0.5-android-debug.apk'), true);
|
||||
assert.equal(isAndroidReleaseAsset('/tmp/notes.txt'), false);
|
||||
});
|
||||
|
||||
test('collectBuiltAssets includes apk files from dist-android', () => {
|
||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'gitea-release-'));
|
||||
const distAndroid = path.join(tempDir, 'dist-android');
|
||||
|
||||
fs.mkdirSync(distAndroid);
|
||||
const apkPath = path.join(distAndroid, 'Toju-1.0.5-android-debug.apk');
|
||||
fs.writeFileSync(apkPath, 'apk');
|
||||
|
||||
const files = collectBuiltAssets({
|
||||
'dist-android': distAndroid,
|
||||
'dist-electron': path.join(tempDir, 'missing-electron'),
|
||||
'dist-server': path.join(tempDir, 'missing-server')
|
||||
});
|
||||
|
||||
assert.deepEqual(files, [apkPath]);
|
||||
});
|
||||
Reference in New Issue
Block a user