feat(updater): add feed-config to map channel setting to feed URL

This commit is contained in:
2026-06-08 06:10:06 +05:30
parent 9da4b96f76
commit 57c8f92f42
2 changed files with 64 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
const REPO = 'amitwh/markdown-converter';
const FEEDS = {
github: {
base: `https://github.com/${REPO}/releases/download`,
},
concreteinfo: {
base: 'https://updates.concreteinfo.co.in/v5',
},
};
function platformSuffix(platform) {
if (platform === 'darwin' || platform === 'mac') return 'mac';
if (platform === 'win32' || platform === 'windows') return 'windows';
return 'linux';
}
function feedForChannel(channel, version, platform) {
const suffix = platformSuffix(platform);
const f = FEEDS[channel] || FEEDS.github;
if (channel === 'github') {
return `${f.base}/v${version}/latest-${suffix}.yml`;
}
return `${f.base}/latest-${suffix}.yml`;
}
function resolveFeedUrl(channel, version, platform) {
return feedForChannel(channel, version, platform);
}
module.exports = { resolveFeedUrl, FEEDS };
@@ -0,0 +1,33 @@
const { resolveFeedUrl, FEEDS } = require('../../../../src/main/updater/feed-config');
describe('feed-config', () => {
test('resolves github channel to GitHub Releases feed', () => {
const url = resolveFeedUrl('github', '5.0.2', 'mac');
expect(url).toBe('https://github.com/amitwh/markdown-converter/releases/download/v5.0.2/latest-mac.yml');
});
test('resolves concreteinfo channel to CI feed', () => {
const url = resolveFeedUrl('concreteinfo', '5.0.2', 'mac');
expect(url).toBe('https://updates.concreteinfo.co.in/v5/latest-mac.yml');
});
test('resolves windows platform correctly', () => {
const url = resolveFeedUrl('github', '5.0.2', 'windows');
expect(url).toContain('latest-windows.yml');
});
test('resolves linux platform correctly', () => {
const url = resolveFeedUrl('github', '5.0.2', 'linux');
expect(url).toContain('latest-linux.yml');
});
test('falls back to github on unknown channel', () => {
const url = resolveFeedUrl('something-weird', '5.0.2', 'mac');
expect(url).toContain('github.com');
});
test('exports both feeds as constants', () => {
expect(FEEDS.github).toBeDefined();
expect(FEEDS.concreteinfo).toBeDefined();
});
});