Skip to content

Commit

Permalink
feat(linux): include MD5 sums in Debian distributions
Browse files Browse the repository at this point in the history
  • Loading branch information
JagandeepBrar committed Nov 27, 2022
1 parent 56f26e7 commit c46924c
Show file tree
Hide file tree
Showing 9 changed files with 66 additions and 60 deletions.
File renamed without changes.
2 changes: 1 addition & 1 deletion .github/workflows/notify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
BUILD_TITLE: ${{ inputs.build-title }}
with:
result-encoding: string
script: return require('.github/scripts/notify-embed.js')();
script: return require('.github/scripts/notify_discord_embed.js')();

- name: Send Discord Message
uses: Ilshidur/action-discord@0.3.2
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,13 @@ jspm_packages/

# Artifacts
output/
debian/
*.apk
*.aab
*.ipa
*.dmg
*.pkg

# Linux Artifacts
debian/DEBIAN/md5sums
debian/usr/local/lib/LunaSea
*.snap
6 changes: 6 additions & 0 deletions debian/DEBIAN/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Package:LunaSea
Architecture:amd64
Essential:no
Priority:optional
Maintainer:LunaSea Support <hello@lunasea.app>
Description:Self-hosted software controller built using Flutter
3 changes: 3 additions & 0 deletions debian/DEBIAN/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

ln -sf '/usr/local/lib/LunaSea/lunasea' '/usr/local/bin/lunasea'
3 changes: 3 additions & 0 deletions debian/DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

rm -f '/usr/local/bin/lunasea'
9 changes: 9 additions & 0 deletions debian/usr/share/applications/lunasea.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Desktop Entry]
Name=LunaSea
Comment=Self-hosted software controller built using Flutter
Icon=/usr/share/icons/lunasea.png
Terminal=false
Type=Application
Categories=Utilities;Entertainment;
Exec=/usr/local/bin/lunasea
TryExec=/usr/local/bin/lunasea
Binary file added debian/usr/share/icons/lunasea.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
98 changes: 40 additions & 58 deletions scripts/generate_debian.dart
Original file line number Diff line number Diff line change
@@ -1,84 +1,66 @@
import 'dart:io';

void main(List<String> args) {
_createSkeleton();

_generateControl(args[0]);
_generateDesktopEntry();
_copyIcon();
_setVersion(args[0]);
_copyBuild();

_determineMD5Sums();
_buildDebian();
}

Future<void> _createSkeleton() async {
if (Directory('debian').existsSync()) {
Directory('debian').deleteSync(recursive: true);
}

Directory('debian/DEBIAN').createSync(recursive: true);
Directory('debian/usr/local/lib').createSync(recursive: true);
Directory('debian/usr/share/applications').createSync(recursive: true);
Directory('debian/usr/share/icons').createSync(recursive: true);
void _setVersion(String version) {
final control = File('debian/DEBIAN/control');
control.writeAsStringSync('Version:$version\n', mode: FileMode.append);
}

void _generateControl(String version) {
final control = File('debian/DEBIAN/control');
void _copyBuild() {
const path = 'debian/usr/local/lib';

String data = '';
data += 'Version:$version\n';
data += 'Architecture:amd64\n';
data += 'Package:LunaSea\n';
data += 'Essential:no\n';
data += 'Priority:optional\n';
data += 'Maintainer:LunaSea Support <hello@lunasea.app>\n';
data += 'Description:Self-hosted software controller built using Flutter\n';
final directory = Directory(path);
if (directory.existsSync()) directory.deleteSync(recursive: true);
directory.createSync(recursive: true);

control.writeAsStringSync(data);
Process.runSync('cp', [
'-r',
'build/linux/x64/release/bundle',
path,
]);
Process.runSync('mv', [
'$path/bundle',
'$path/LunaSea',
]);
}

void _generateDesktopEntry() {
final entry = File('debian/usr/share/applications/lunasea.desktop');
void _determineMD5Sums() {
final find = Process.runSync(
'find',
[".", "-type", "f", "-not", "-path", "'./DEBIAN/*'"],
workingDirectory: 'debian',
).stdout as String;

String data = '';
data += '[Desktop Entry]\n';
data += 'Name=LunaSea\n';
data += 'Comment=Self-hosted software controller built using Flutter\n';
data += 'Icon=/usr/share/icons/lunasea.png\n';
data += 'Terminal=false\n';
data += 'Type=Application\n';
data += 'Categories=Utilities;Entertainment;\n';
data += 'Exec=/usr/local/lib/LunaSea/lunasea\n';
data += 'TryExec=/usr/local/lib/LunaSea/lunasea\n';
final files = find
.split('\n')
.where((file) => !file.startsWith('./DEBIAN'))
.map((file) => file.replaceAll('./', ''))
.toList();

entry.writeAsStringSync(data);
}
final md5 = Process.runSync(
'md5sum',
files,
workingDirectory: 'debian',
).stdout as String;

void _copyIcon() {
final icon = File('assets/icon/icon_linux.png');
icon.copySync('debian/usr/share/icons/lunasea.png');
}

void _copyBuild() {
Process.runSync(
'cp',
['-r', 'build/linux/x64/release/bundle', 'debian/usr/local/lib'],
);
Process.runSync(
'mv',
['debian/usr/local/lib/bundle', 'debian/usr/local/lib/LunaSea'],
);
File('debian/DEBIAN/md5sums').writeAsStringSync(md5);
}

void _buildDebian() {
if (!Directory('output').existsSync()) {
Directory('output').createSync(recursive: true);
}

Process.runSync(
'dpkg-deb',
['--build', 'debian'],
);
Process.runSync('dpkg-deb', [
'--build',
'debian',
]);
Process.runSync('mv', [
'debian.deb',
'output/lunasea-linux-amd64.deb',
Expand Down

0 comments on commit c46924c

Please sign in to comment.