152 lines
3.6 KiB
JavaScript
152 lines
3.6 KiB
JavaScript
const fs = require('node:fs');
|
|
const process = require("node:process");
|
|
const {execSync, exec} = require('node:child_process')
|
|
|
|
|
|
const binderPortable = "out/Binder-linux-x64";
|
|
|
|
const excludeList = `"libatk-1.0.so.0
|
|
libatk-bridge-2.0.so.0,
|
|
libatspi.so.0,
|
|
libavahi-client.so.3,
|
|
libavahi-common.so.3,
|
|
libblkid.so.1,
|
|
libbsd.so.0,
|
|
libcairo-gobject.so.2,
|
|
libcairo.so.2,
|
|
libcups.so.2,
|
|
libdatrie.so.1,
|
|
libdbus-1.so.3,
|
|
libepoxy.so.0,
|
|
libffi.so.6,
|
|
libgcrypt.so.20,
|
|
libgdk-3.so.0,
|
|
libgdk_pixbuf-2.0.so.0,
|
|
libgio-2.0.so.0,
|
|
libglib-2.0.so.0,
|
|
libgmodule-2.0.so.0,
|
|
libgnutls.so.30,
|
|
libgobject-2.0.so.0,
|
|
libgraphite2.so.3,
|
|
libgssapi_krb5.so.2,
|
|
libgtk-3.so.0,
|
|
libhogweed.so.4,
|
|
libidn2.so.0,
|
|
libk5crypto.so.3,
|
|
libkeyutils.so.1,
|
|
libkrb5.so.3,
|
|
libkrb5support.so.0,
|
|
liblz4.so.1,
|
|
liblzma.so.5,
|
|
libmount.so.1,
|
|
libnettle.so.6,
|
|
libnspr4.so,
|
|
libnss3.so,
|
|
libnssutil3.so,
|
|
libpango-1.0.so.0,
|
|
libpangocairo-1.0.so.0,
|
|
libpangoft2-1.0.so.0,
|
|
libpcre.so.3,
|
|
libpixman-1.so.0,
|
|
libplc4.so,
|
|
libplds4.so,
|
|
libpng16.so.16,
|
|
libselinux.so.1,
|
|
libsmime3.so,
|
|
libsystemd.so.0,
|
|
libtasn1.so.6,
|
|
libunistring.so.2,
|
|
libwayland-client.so.0,
|
|
libwayland-cursor.so.0,
|
|
libwayland-egl.so.1,
|
|
libwayland-server.so.0,
|
|
libXau.so.6,
|
|
libxcb-render.so.0,
|
|
libxcb-shm.so.0,
|
|
libXcomposite.so.1,
|
|
libXcursor.so.1,
|
|
libXdamage.so.1,
|
|
libXdmcp.so.6,
|
|
libXext.so.6,
|
|
libXfixes.so.3,
|
|
libXinerama.so.1,
|
|
libXi.so.6"`
|
|
|
|
function addIconToAppDir(resolution)
|
|
{
|
|
var theDir = "out/AppDir/usr/share/icons/hicolor/" + resolution + "x" + resolution + "/apps";
|
|
var theDestPath = theDir + "/binder.png"
|
|
var srcPath = "icons/icon" + resolution + ".png";
|
|
|
|
fs.mkdirSync(theDir, {recursive: true});
|
|
fs.copyFileSync(srcPath, theDestPath);
|
|
}
|
|
|
|
|
|
function constructAppImage(versionString)
|
|
{
|
|
try
|
|
{
|
|
fs.rmSync("out/AppDir", {recursive: true, force: true});
|
|
}
|
|
catch
|
|
{
|
|
//pass
|
|
}
|
|
|
|
fs.mkdirSync("out/AppDir/usr/bin", {recursive: true});
|
|
|
|
//this is a fucking mess wtf
|
|
fs.renameSync(binderPortable, "out/AppDir/usr/bin");
|
|
|
|
//fs.mkdirSync("out/AppDir/usr/lib", {recursive: true});
|
|
fs.mkdirSync("out/AppDir/usr/share/applications", {recursive: true});
|
|
|
|
|
|
fs.copyFileSync("AppRun", "out/AppDir/AppRun");
|
|
|
|
//Appimagetool seems to be fine with just the appimage at the AppDir level but
|
|
// I don't know the specifics and it looks like linuxdeployqt leaves it in bother
|
|
// places so lets just do that to be safe
|
|
fs.copyFileSync("Binder.desktop", "out/AppDir/usr/share/applications/Binder.desktop");
|
|
fs.copyFileSync("Binder.desktop", "out/AppDir/Binder.desktop");
|
|
|
|
fs.copyFileSync("Binder.desktop", "out/AppDir/Binder.desktop");
|
|
|
|
//Also it wants a specific icon
|
|
fs.copyFileSync( "icons/icon256.png", "out/AppDir/binder.png");
|
|
|
|
|
|
addIconToAppDir(16);
|
|
addIconToAppDir(24);
|
|
addIconToAppDir(32);
|
|
addIconToAppDir(48);
|
|
addIconToAppDir(64);
|
|
addIconToAppDir(96);
|
|
addIconToAppDir(128);
|
|
addIconToAppDir(256);
|
|
|
|
fs.mkdirSync("out/AppDir/usr/share/icons/hicolor/scalable", {recursive: true});
|
|
fs.copyFileSync("icons/icon.svg", "out/AppDir/usr/share/icons/hicolor/scalable/binder.svg");
|
|
|
|
//Do this or deal with a weird character in the output
|
|
versionString = versionString.trim();
|
|
|
|
console.log("version tag: " + versionString);
|
|
const newEnv = {...process.env, VERSION: versionString, ARCH: "x86_64"};
|
|
console.log("Using environment variables: " + JSON.stringify(newEnv));
|
|
|
|
process.chdir('out');
|
|
execSync("appimagetool AppDir", {env: newEnv});
|
|
}
|
|
|
|
async function doTheDo()
|
|
{
|
|
console.log("Henlo wurl :3c");
|
|
//console.log("Package ver: " + process.env.npm_package_version);
|
|
|
|
constructAppImage(process.env.npm_package_version);
|
|
}
|
|
|
|
doTheDo();
|