mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-10-01 17:29:29 +05:30
build(release): dynamic builder config + fix bundled-tool lookup in packages
- electron-builder config moves to electron-builder.config.js so markitdown bundling is conditional per platform (PyInstaller only builds for the host OS; a missing binary now logs a warning and ships without it instead of failing the build); package.json static build section removed, all npm scripts pointed at the config; third-party-licenses/ added to packaged files - FIX (pre-existing): packaged apps looked for bundled pandoc in resources/bin, but extraFiles land next to the executable (Contents/ on macOS) — packaged builds silently fell back to system pandoc since 4.5. New bundledToolDir() resolves the real location for pandoc + markitdown - download-tools.js pins the win32 pandoc.exe SHA-256 (fetched + verified) - sharp packaging test accepts sharp 0.35's versioned binding filename - release.yml: bundle-markitdown step (best-effort) on every OS and a new macOS job; release aggregates linux+windows+macos artifacts Local release artifacts built and verified (dist/): - MarkdownConverter-4.7.0.AppImage (363MB, pandoc+markitdown bundled, packaged app boots clean, tools resolve at the fixed path) - markdown-converter_4.7.0_amd64.deb (293MB) - MarkdownConverter-Setup-4.7.0.exe (223MB), portable exe (223MB), zip (305MB) — pandoc bundled; markitdown omitted (cannot cross-build), legal docs verified inside app.asar 637/637 tests green; lint clean.
This commit is contained in:
@@ -87,9 +87,18 @@ describe('Legal compliance artifacts', () => {
|
||||
expect(sources).toMatch(/https:\/\/ffmpeg\.org\/releases\//);
|
||||
});
|
||||
|
||||
test('packaging includes the legal documents in build.files', () => {
|
||||
test('packaging includes the legal documents in build files', () => {
|
||||
// The build config lives in electron-builder.config.js (dynamic — it
|
||||
// conditionally bundles the markitdown binary per platform)
|
||||
const configSrc = fs.readFileSync(
|
||||
path.join(rootDir, 'electron-builder.config.js'),
|
||||
'utf-8'
|
||||
);
|
||||
expect(configSrc).toContain("'THIRD-PARTY-NOTICES.md'");
|
||||
expect(configSrc).toContain("'SOURCES.md'");
|
||||
expect(configSrc).toContain('third-party-licenses');
|
||||
// And package.json must not carry a stale static build section anymore
|
||||
const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf-8'));
|
||||
expect(pkg.build.files).toContain('THIRD-PARTY-NOTICES.md');
|
||||
expect(pkg.build.files).toContain('SOURCES.md');
|
||||
expect(pkg.build).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -50,8 +50,11 @@ function listFilesRecursively(dir) {
|
||||
);
|
||||
|
||||
test('sharp-linux-x64 ships its native binding', () => {
|
||||
const binding = path.join(UNPACKED_IMG_DIR, 'sharp-linux-x64', 'lib', 'sharp-linux-x64.node');
|
||||
expect(fs.existsSync(binding)).toBe(true);
|
||||
// sharp 0.35 names the binding with a version suffix
|
||||
// (sharp-linux-x64-0.35.4.node); 0.34 used a bare name — accept both
|
||||
const libDir = path.join(UNPACKED_IMG_DIR, 'sharp-linux-x64', 'lib');
|
||||
const bindings = fs.readdirSync(libDir).filter((f) => /^sharp-linux-x64.*\.node$/.test(f));
|
||||
expect(bindings.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
test('sharp-libvips-linux-x64 ships the bundled libvips shared libraries', () => {
|
||||
|
||||
Reference in New Issue
Block a user