Skip to content

Commit 951a5bb

Browse files
committed
flatpak bundles fur alles
Signed-off-by: Niv Sardi <xaiki@evilgiggle.com>
1 parent e94d854 commit 951a5bb

File tree

3 files changed

+169
-115
lines changed

3 files changed

+169
-115
lines changed

dist/linux/butter.desktop

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[Desktop Entry]
2+
Comment=Watch Movies and TV Shows instantly
3+
Name=Butter
4+
Exec=/app/share/butter/Butter %U
5+
Icon=org.butterproject.Desktop
6+
MimeType=application/x-bittorrent;x-scheme-handler/magnet;
7+
StartupNotify=false
8+
Categories=AudioVideo;Video;Network;Player;P2P;
9+
Type=Application

gulpfile.js

Lines changed: 57 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,23 @@ const nwVersion = '0.18.6',
1414
* dependencies *
1515
***************/
1616
const gulp = require('gulp'),
17-
glp = require('gulp-load-plugins')(),
18-
runSequence = require('run-sequence'),
19-
del = require('del'),
17+
glp = require('gulp-load-plugins')(),
18+
runSequence = require('run-sequence'),
19+
del = require('del'),
2020

21-
nwBuilder = require('nw-builder'),
22-
currentPlatform = require('nw-builder/lib/detectCurrentPlatform.js'),
21+
nwBuilder = require('nw-builder'),
22+
currentPlatform = require('nw-builder/lib/detectCurrentPlatform.js'),
2323

24-
yargs = require('yargs'),
25-
nib = require('nib'),
26-
git = require('git-rev'),
24+
yargs = require('yargs'),
25+
nib = require('nib'),
26+
git = require('git-rev'),
2727

28-
fs = require('fs'),
29-
path = require('path'),
30-
exec = require('child_process').exec,
31-
spawn = require('child_process').spawn,
32-
pkJson = require('./package.json');
28+
fs = require('fs'),
29+
flatpak = require('flatpak-bundler'),
30+
path = require('path'),
31+
exec = require('child_process').exec,
32+
spawn = require('child_process').spawn,
33+
pkJson = require('./package.json');
3334

3435

3536
/***********
@@ -302,6 +303,45 @@ gulp.task('nsis', () => {
302303
})).catch(console.log.bind(console));
303304
});
304305

306+
gulp.task('build-flatpak', () => {
307+
return new Promise((accept, reject) => {
308+
flatpak.bundle({
309+
id: 'org.butterproject.Desktop',
310+
base: 'io.atom.electron.BaseApp',
311+
baseFlatpakref: 'https://s3-us-west-2.amazonaws.com/electron-flatpak.endlessm.com/electron-base-app-master.flatpakref',
312+
runtime: 'org.freedesktop.Platform',
313+
runtimeVersion: '1.4',
314+
runtimeFlatpakref: 'https://raw.githubusercontent.com/endlessm/flatpak-bundler/master/refs/freedesktop-runtime-1.4.flatpakref',
315+
sdk: 'org.freedesktop.Sdk',
316+
files: [
317+
[ './dist/linux/butter.desktop', '/share/applications/org.butterproject.Desktop.desktop'],
318+
[ './src/app/images/icon.png', '/share/icons/org.butterproject.Desktop.png'],
319+
[ releasesDir + '/Butter/linux64', '/share/butter' ]
320+
],
321+
symlinks: [
322+
[ '/share/butter/Butter', '/bin/Butter' ]
323+
],
324+
finishArgs: [
325+
'--share=ipc', '--socket=x11',
326+
'--socket=pulseaudio',
327+
'--filesystem=home',
328+
'--share=network',
329+
'--device=dri'
330+
]
331+
}, { // Build options
332+
arch: 'x86_64',
333+
bundlePath: 'build/Butter/linux64-flatpak/butter-desktop_x86_64.flatpak',
334+
gpgSign: 'CF953E76C24B9018' // Gpg key to sign with
335+
}, function (error) {
336+
if (error) {
337+
reject(error);
338+
}
339+
console.log('Flatpak built successfully.');
340+
accept(true);
341+
});
342+
});
343+
});
344+
305345
// compile debian packages
306346
// TODO: https://www.npmjs.com/package/nobin-debian-installer
307347
gulp.task('deb', () => {
@@ -457,6 +497,10 @@ gulp.task('test', (callback) => {
457497
runSequence('jshint', 'injectgit', 'css', callback);
458498
});
459499

500+
gulp.task('flatpak', (callback) => (
501+
runSequence('build', 'build-flatpak', callback)
502+
))
503+
460504
//TODO:
461505
//setexecutable?
462506
//bower_clean

package.json

Lines changed: 103 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,105 @@
11
{
2-
"name": "Butter",
3-
"companyName": "Butter Project",
4-
"installIcon": "src/app/images/butter.ico",
5-
"unInstallIcon": "src/app/images/butter_uninstall.ico",
6-
"homepage": "http://butterproject.org/",
7-
"bugs": "https://github.com/butterproject/butter-desktop/issues",
8-
"repository": {
9-
"type": "git",
10-
"url": "https://github.com/butterproject/butter-desktop.git"
11-
},
12-
"license": "GPL-3.0",
13-
"main": "src/app/index.html",
14-
"version": "0.3.8-5a",
15-
"releaseName": "There's nothing on TV",
16-
"scripts": {
17-
"postinstall": "node_modules/.bin/bower install --config.interactive=false",
18-
"postupdate": "node_modules/.bin/bower update --config.interactive=false",
19-
"test": "gulp test"
20-
},
21-
"engines": {
22-
"npm": ">=3.0.0",
23-
"node": ">=4.4.0"
24-
},
25-
"window": {
26-
"title": "Butter",
27-
"icon": "src/app/images/icon.png",
28-
"toolbar": false,
29-
"frame": false,
30-
"min_width": 960,
31-
"min_height": 520,
32-
"resizable": true,
33-
"show": false,
34-
"position": "center"
35-
},
36-
"chromium-args": "--enable-node-worker",
37-
"dependencies": {
38-
"butter-provider": "0.6.0",
39-
"butter-provider-ccc": "git+https://github.com/butterproviders/butter-provider-ccc",
40-
"butter-provider-youtube": "git+https://github.com/butterproviders/butter-provider-youtube",
41-
"butter-provider-vodo": "git+https://github.com/butterproviders/butter-provider-vodo",
42-
"butter-provider-archive": "git+https://github.com/butterproviders/butter-provider-archive",
43-
"adm-zip": "0.4.7",
44-
"airplay-protocol": "^2.0.2",
45-
"async": "2.x.x",
46-
"bonjour": "^3.5.0",
47-
"chromecasts": "1.9.0",
48-
"defer-request": "0.0.3",
49-
"dlnacasts": "0.1.0",
50-
"i18n": "0.x.x",
51-
"iconv-lite": "0.x.x",
52-
"jschardet": "1.4.1",
53-
"json-rpc2": "1.0.2",
54-
"markdown": "0.5.x",
55-
"memoizee": "0.x.x",
56-
"mkdirp": "*",
57-
"moment": ">=2.11.2",
58-
"mv": "2.x.x",
59-
"nedb": "1.4.0",
60-
"node-captions": "0.4.6",
61-
"node-webkit-fdialogs": "latest",
62-
"nodecast-js": "^1.0.1",
63-
"opensubtitles-api": "^3.1.0",
64-
"q": "2.0.3",
65-
"readdirp": "*",
66-
"request": "2.x.x",
67-
"rimraf": "2.x.x",
68-
"sanitizer": "0.x.x",
69-
"semver": "5.x.x",
70-
"send": "0.14.2",
71-
"strike-api": "0.2.0",
72-
"tar": "2.2.1",
73-
"temp": "0.x.x",
74-
"webtorrent-health": "1.x.x",
75-
"trakt.tv": "5.0.1",
76-
"trakt.tv-ondeck": "5.0.1",
77-
"trakt.tv-matcher": "5.0.0",
78-
"trakt.tv-images": "5.0.0",
79-
"underscore": "1.x.x",
80-
"urijs": "1.x.x",
81-
"webtorrent": "^0.98.0"
82-
},
83-
"devDependencies": {
84-
"bower": "^1.7.9",
85-
"del": "^2.2.0",
86-
"jshint": "^2.9.1",
87-
"jshint-stylish": "^2.1.0",
88-
"git-rev": "^0.2.1",
89-
"gulp": "^3.9.0",
90-
"gulp-stylus": "^2.3.1",
91-
"gulp-tar": "^1.8.0",
92-
"gulp-gzip": "^1.2.0",
93-
"gulp-jshint": "^2.0.0",
94-
"gulp-jsbeautifier": "^2.0.3",
95-
"gulp-filter": "^4.0.0",
96-
"gulp-load-plugins": "^1.2.0",
97-
"guppy-pre-commit": "^0.4.0",
98-
"nib": "^1.1.0",
99-
"nw-builder": "^3.1.2",
100-
"run-sequence": "^1.1.5",
101-
"stylus": "^0.54.2",
102-
"yargs": "^6.3.0"
103-
}
2+
"name": "Butter",
3+
"companyName": "Butter Project",
4+
"installIcon": "src/app/images/butter.ico",
5+
"unInstallIcon": "src/app/images/butter_uninstall.ico",
6+
"homepage": "http://butterproject.org/",
7+
"bugs": "https://github.com/butterproject/butter-desktop/issues",
8+
"repository": {
9+
"type": "git",
10+
"url": "https://github.com/butterproject/butter-desktop.git"
11+
},
12+
"license": "GPL-3.0",
13+
"main": "src/app/index.html",
14+
"version": "0.3.8-5a",
15+
"releaseName": "There's nothing on TV",
16+
"scripts": {
17+
"postinstall": "node_modules/.bin/bower install --config.interactive=false",
18+
"postupdate": "node_modules/.bin/bower update --config.interactive=false",
19+
"test": "gulp test"
20+
},
21+
"engines": {
22+
"npm": ">=3.0.0",
23+
"node": ">=4.4.0"
24+
},
25+
"window": {
26+
"title": "Butter",
27+
"icon": "src/app/images/icon.png",
28+
"toolbar": false,
29+
"frame": false,
30+
"min_width": 960,
31+
"min_height": 520,
32+
"resizable": true,
33+
"show": false,
34+
"position": "center"
35+
},
36+
"chromium-args": "--enable-node-worker",
37+
"dependencies": {
38+
"adm-zip": "0.4.7",
39+
"airplay-protocol": "^2.0.2",
40+
"async": "2.x.x",
41+
"bonjour": "^3.5.0",
42+
"butter-provider": "0.6.0",
43+
"butter-provider-archive": "git+https://github.com/butterproviders/butter-provider-archive",
44+
"butter-provider-ccc": "git+https://github.com/butterproviders/butter-provider-ccc",
45+
"butter-provider-vodo": "git+https://github.com/butterproviders/butter-provider-vodo",
46+
"butter-provider-youtube": "git+https://github.com/butterproviders/butter-provider-youtube",
47+
"chromecasts": "1.9.0",
48+
"defer-request": "0.0.3",
49+
"dlnacasts": "0.1.0",
50+
"flatpak-bundler": "^0.1.3",
51+
"i18n": "0.x.x",
52+
"iconv-lite": "0.x.x",
53+
"jschardet": "1.4.1",
54+
"json-rpc2": "1.0.2",
55+
"markdown": "0.5.x",
56+
"memoizee": "0.x.x",
57+
"mkdirp": "*",
58+
"moment": ">=2.11.2",
59+
"mv": "2.x.x",
60+
"nedb": "1.4.0",
61+
"node-captions": "0.4.6",
62+
"node-webkit-fdialogs": "latest",
63+
"nodecast-js": "^1.0.1",
64+
"opensubtitles-api": "^3.1.0",
65+
"q": "2.0.3",
66+
"readdirp": "*",
67+
"request": "2.x.x",
68+
"rimraf": "2.x.x",
69+
"sanitizer": "0.x.x",
70+
"semver": "5.x.x",
71+
"send": "0.14.2",
72+
"strike-api": "0.2.0",
73+
"tar": "2.2.1",
74+
"temp": "0.x.x",
75+
"trakt.tv": "5.0.1",
76+
"trakt.tv-images": "5.0.0",
77+
"trakt.tv-matcher": "5.0.0",
78+
"trakt.tv-ondeck": "5.0.1",
79+
"underscore": "1.x.x",
80+
"urijs": "1.x.x",
81+
"webtorrent": "^0.98.0",
82+
"webtorrent-health": "1.x.x"
83+
},
84+
"devDependencies": {
85+
"bower": "^1.7.9",
86+
"del": "^2.2.0",
87+
"jshint": "^2.9.1",
88+
"jshint-stylish": "^2.1.0",
89+
"git-rev": "^0.2.1",
90+
"gulp": "^3.9.0",
91+
"gulp-stylus": "^2.3.1",
92+
"gulp-tar": "^1.8.0",
93+
"gulp-gzip": "^1.2.0",
94+
"gulp-jshint": "^2.0.0",
95+
"gulp-jsbeautifier": "^2.0.3",
96+
"gulp-filter": "^4.0.0",
97+
"gulp-load-plugins": "^1.2.0",
98+
"guppy-pre-commit": "^0.4.0",
99+
"nib": "^1.1.0",
100+
"nw-builder": "^3.1.2",
101+
"run-sequence": "^1.1.5",
102+
"stylus": "^0.54.2",
103+
"yargs": "^6.3.0"
104+
}
104105
}

0 commit comments

Comments
 (0)