git ssb

1+

dinoworm ๐Ÿ› / patchwork-downloader



Tree: 05b091acca0b6c259bc8ac28101132af986f8fdb

Files: 05b091acca0b6c259bc8ac28101132af986f8fdb / index.js

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

Built with git-ssb-web