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