mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 10:00:17 +05:30
feat(updater): add feed-config to map channel setting to feed URL
This commit is contained in:
@@ -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();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user