git ssb

1+

dinoworm ๐Ÿ› / patchwork-downloader



Tree: 49657e414149351bb2bdb95532753c5c68906d3b

Files: 49657e414149351bb2bdb95532753c5c68906d3b / index.js

2054 bytesRaw
1const xhr = require('xhr')
2
3patchworkDownloader()
4
5function patchworkDownloader () {
6 const platformEl = document.querySelector('.main .platform')
7 const versionEl = document.querySelector('.main .version')
8 const latestEl = document.querySelector('.main .latest')
9 const downloadEl = document.querySelector('.main .download')
10
11 const platform = getPlatform(navigator.platform)
12 console.log('platform', platform)
13
14 platformEl.textContent = platform
15
16 getLatestRelease(function (err, release) {
17 if (err) throw err
18
19 console.log('release', release)
20
21 versionEl.textContent = release.version
22 latestEl.href = release.url
23 downloadEl.href = release.assets[platform]
24 })
25}
26
27function getPlatform (platform) {
28 if (platform.substring(0, 3).toUpperCase() === 'MAC')
29 return 'mac'
30 if (platform.substring(0, 3).toUpperCase() === 'WIN')
31 return 'windows'
32 if (platform.substring(0, 5).toUpperCase() === 'LINUX')
33 return 'linux'
34 return null
35}
36
37
38function getLatestRelease (options, cb) {
39 if (!cb) {
40 cb = options
41 options = {}
42 }
43
44 const {
45 base = 'https://api.github.com/repos/',
46 target = '/releases/latest',
47 owner = 'ssbc',
48 repo = 'patchwork'
49 } = options
50
51 xhr({
52 url: `${base}${owner}/${repo}${target}`,
53 responseType: 'json'
54 }, function (err, res, body) {
55 if (err) return cb(err)
56
57 const {
58 tag_name: version,
59 html_url: url
60 } = body
61
62 const assets = findAssetUrls(body.assets)
63
64 cb(null, {
65 version,
66 url,
67 assets
68 })
69 })
70}
71
72const executablesByPlatform = {
73 mac: [
74 'dmg'
75 ],
76 windows: [
77 'exe'
78 ],
79 linux: [
80 'AppImage'
81 ]
82}
83
84function findAssetUrls (assets) {
85 var urls = {}
86 assets.forEach(asset => {
87 const url = asset.browser_download_url
88 var extension = url.split('.')
89 extension = extension[extension.length - 1]
90 for (var platform in executablesByPlatform) {
91 if (~executablesByPlatform[platform].indexOf(extension)) {
92 urls[platform] = url
93 return
94 }
95 }
96 })
97 return urls
98}
99

Built with git-ssb-web