Skip to content

Commit 7803ea1

Browse files
committed
U generate deb from gradle
1 parent 502153c commit 7803ea1

File tree

1 file changed

+80
-1
lines changed

1 file changed

+80
-1
lines changed

src/main/java/io/github/fvarrui/javapackager/gradle/GenerateDeb.java

Lines changed: 80 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package io.github.fvarrui.javapackager.gradle;
22

33
import java.io.File;
4+
import java.util.UUID;
5+
6+
import com.netflix.gradle.plugins.deb.Deb;
47

58
import io.github.fvarrui.javapackager.packagers.ArtifactGenerator;
9+
import io.github.fvarrui.javapackager.packagers.Context;
610
import io.github.fvarrui.javapackager.packagers.LinuxPackager;
711
import io.github.fvarrui.javapackager.packagers.Packager;
812
import io.github.fvarrui.javapackager.utils.Logger;
13+
import io.github.fvarrui.javapackager.utils.VelocityUtils;
914

1015
/**
1116
* Creates a DEB package file including all app folder's content only for
@@ -28,7 +33,81 @@ public File apply(Packager packager) throws Exception {
2833

2934
Logger.warn("Sorry! " + getArtifactName() + " generation is not yet available");
3035

31-
return null;
36+
File assetsFolder = linuxPackager.getAssetsFolder();
37+
String name = linuxPackager.getName();
38+
String description = linuxPackager.getDescription();
39+
File appFolder = linuxPackager.getAppFolder();
40+
File outputDirectory = linuxPackager.getOutputDirectory();
41+
String version = linuxPackager.getVersion();
42+
boolean bundleJre = linuxPackager.getBundleJre();
43+
String jreDirectoryName = linuxPackager.getJreDirectoryName();
44+
File executable = linuxPackager.getExecutable();
45+
String organizationName = linuxPackager.getOrganizationName();
46+
String organizationEmail = linuxPackager.getOrganizationEmail();
47+
48+
// generates desktop file from velocity template
49+
File desktopFile = new File(assetsFolder, name + ".desktop");
50+
VelocityUtils.render("linux/desktop.vtl", desktopFile, linuxPackager);
51+
Logger.info("Desktop file rendered in " + desktopFile.getAbsolutePath());
52+
53+
// generates deb control file from velocity template
54+
File controlFile = new File(assetsFolder, "control");
55+
VelocityUtils.render("linux/control.vtl", controlFile, linuxPackager);
56+
Logger.info("Control file rendered in " + controlFile.getAbsolutePath());
57+
58+
// generated deb file
59+
File debFile = new File(outputDirectory, name + "_" + version + ".deb");
60+
61+
Deb debTask = createDebTask();
62+
debTask.setProperty("archiveFileName", debFile.getName());
63+
debTask.setProperty("destinationDirectory", outputDirectory);
64+
debTask.setPackageName(name);
65+
debTask.setPackageDescription(description);
66+
debTask.setPackager(organizationName);
67+
debTask.setMaintainer(organizationName + (organizationEmail != null ? " <" + organizationEmail + ">" : ""));
68+
debTask.setPriority("optional");
69+
debTask.setArchStr("amd64");
70+
debTask.setDistribution("development");
71+
72+
/* installation destination */
73+
debTask.into("/opt/" + name);
74+
75+
/* includes app folder files, except executable file and jre/bin/java */
76+
debTask.from(appFolder, c -> {
77+
c.into(".");
78+
c.exclude(executable.getName());
79+
if (bundleJre) {
80+
c.exclude(jreDirectoryName + "/bin/java");
81+
}
82+
});
83+
84+
/* executable */
85+
debTask.from(executable, c -> {
86+
c.into(".");
87+
c.setFileMode(0755);
88+
});
89+
90+
/* java binary file */
91+
if (bundleJre) {
92+
debTask.from(new File(appFolder, jreDirectoryName + "/bin/java"), c -> {
93+
c.into(".");
94+
c.setFileMode(0755);
95+
});
96+
}
97+
98+
/* desktop file */
99+
debTask.from(desktopFile, c -> {
100+
c.into("/usr/share/applications");
101+
});
102+
103+
/* symbolic link in /usr/local/bin to app binary */
104+
debTask.link("/usr/local/bin/" + name, "/opt/" + name + "/" + name, 0777);
105+
106+
return debFile;
107+
}
108+
109+
private Deb createDebTask() {
110+
return Context.getGradleContext().getProject().getTasks().create("createDEb_" + UUID.randomUUID(), Deb.class);
32111
}
33112

34113
}

0 commit comments

Comments
 (0)