forked from desktop/desktop
-
Notifications
You must be signed in to change notification settings - Fork 511
/
package-debian.ts
104 lines (90 loc) · 2.78 KB
/
package-debian.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { promisify } from 'util'
import { join } from 'path'
import glob = require('glob')
const globPromise = promisify(glob)
import { rename } from 'fs-extra'
import { getVersion } from '../app/package-info'
import { getDistPath, getDistRoot } from './dist-info'
const distRoot = getDistRoot()
// best guess based on documentation
type DebianOptions = {
// required
src: string
dest: string
arch: 'amd64' | 'i386' | 'arm64'
// optional
description?: string
productDescription?: string
categories?: Array<string>
section?: string
priority?: 'required' | 'important' | 'standard' | 'optional' | 'extra'
homepage?: string
icon?: any
scripts?: {
preinst?: string
postinst?: string
prerm?: string
postrm?: string
}
mimeType?: Array<string>
maintainer?: string
depends?: Array<string>
}
const options: DebianOptions = {
src: getDistPath(),
dest: distRoot,
arch: 'amd64',
description: 'Simple collaboration from your desktop',
productDescription:
'This is the unofficial port of GitHub Desktop for Linux distributions',
section: 'GNOME;GTK;Development',
priority: 'extra',
homepage: 'https://github.com/shiftkey/desktop',
depends: [
// Desktop-specific dependencies
'libcurl3 | libcurl4',
'libsecret-1-0',
'gnome-keyring',
],
icon: {
'32x32': 'app/static/logos/32x32.png',
'64x64': 'app/static/logos/64x64.png',
'128x128': 'app/static/logos/128x128.png',
'256x256': 'app/static/logos/256x256.png',
'512x512': 'app/static/logos/512x512.png',
'1024x1024': 'app/static/logos/1024x1024.png',
},
scripts: {
postinst: 'script/resources/deb/postinst.sh',
postrm: 'script/resources/deb/postrm.sh',
},
mimeType: [
'x-scheme-handler/x-github-client',
'x-scheme-handler/x-github-desktop-auth',
// workaround for handling OAuth flow until we figure out what we're doing
// with the development OAuth details
//
// see https://github.com/shiftkey/desktop/issues/72 for more details
'x-scheme-handler/x-github-desktop-dev-auth',
],
maintainer: 'Brendan Forster <github@brendanforster.com>',
}
export async function packageDebian(): Promise<string> {
if (process.platform === 'win32') {
return Promise.reject('Windows is not supported')
}
const installer = require('electron-installer-debian')
await installer(options)
const installersPath = `${distRoot}/github-desktop*.deb`
const files = await globPromise(installersPath)
if (files.length !== 1) {
return Promise.reject(
`Expected one file but instead found '${files.join(', ')}' - exiting...`
)
}
const oldPath = files[0]
const newFileName = `GitHubDesktop-linux-${getVersion()}.deb`
const newPath = join(distRoot, newFileName)
await rename(oldPath, newPath)
return Promise.resolve(newPath)
}