gex: simplify build

This commit is contained in:
Luke D. Jones
2023-06-29 23:05:00 +12:00
parent e325ebed18
commit dbe80d1914
13 changed files with 1040 additions and 1114 deletions

4
.gitignore vendored
View File

@@ -14,7 +14,7 @@ vendor_*
node-modules
bindings/ts/*.d.ts
bindings/ts/*.js.map
desktop-extensions/gnome/_build
desktop-extensions/gnome/target
desktop-extensions/gnome/dist
desktop-extensions/gnome/node_modules
desktop-extensions/gnome/schemas/gschemas.compiled
desktop-extensions/gnome/*.zip

View File

@@ -0,0 +1,65 @@
const { build } = require("esbuild");
const fs = require("fs");
const path = require("path");
var exec = require('child_process').exec;
const AdmZip = require("adm-zip");
const metadata = require("./src/metadata.json");
build({
entryPoints: ['src/extension.ts'],
outdir: 'dist',
bundle: true,
// Do not remove the functions `enable()`, `disable()` and `init()`
treeShaking: false,
// firefox60 // Since GJS 1.53.90
// firefox68 // Since GJS 1.63.90
// firefox78 // Since GJS 1.65.90
// firefox91 // Since GJS 1.71.1
// firefox102 // Since GJS 1.73.2
target: "firefox78",
platform: "node",
// platform: "neutral",
// mainFields: ['main'],
// conditions: ['require', 'default'],
// format: 'cjs',
external: ['gi://*', 'system', 'gettext', 'cairo'],
}).then(() => {
const metaSrc = path.resolve(__dirname, "src/metadata.json");
const metaDist = path.resolve(__dirname, "dist/metadata.json");
const schemaSrc = path.resolve(__dirname, "schemas");
const schemaDist = path.resolve(__dirname, "dist/schemas");
const dbusXmlSrc = path.resolve(__dirname, "../../bindings/dbus-xml");
const dbusXmlDist = path.resolve(__dirname, "dist/resources/dbus");
const zipFilename = `${metadata.uuid}.zip`;
const zipDist = path.resolve(__dirname, zipFilename);
exec('glib-compile-schemas schemas/',
(error, stdout, stderr) => {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
});
fs.copyFileSync(metaSrc, metaDist);
fs.cpSync(schemaSrc, schemaDist, { recursive: true }, (err) => {
if (err) {
console.error(err);
}
});
fs.cpSync(dbusXmlSrc, dbusXmlDist, { recursive: true }, (err) => {
if (err) {
console.error(err);
}
});
const zip = new AdmZip();
zip.addLocalFolder(path.resolve(__dirname, "dist"));
zip.writeZip(zipDist);
console.log(`Build complete. Zip file: ${zipFilename}\n`);
console.log(`Install with: gnome-extensions install ${zipFilename}`)
console.log(`Update with: gnome-extensions install ${zipFilename} --force`)
console.log(`Enable with: gnome-extensions enable ${metadata.uuid} --user`)
});

File diff suppressed because it is too large Load Diff

View File

@@ -2,26 +2,19 @@
"name": "asusctl-gex",
"version": "4.7.0",
"description": "asusctl-gex is a frontend for some functionalities of asusctl and supergfxctl that were born inside the asus-linux.org community.\n\nasusctl is required.\n\nTo learn more about it, please have a look at:\nhttps://gitlab.com/asus-linux/asusctl\nhttps://gitlab.com/asus-linux/asusctl-gex\n\nhttps://asus-linux.org/",
"dependencies": {
"npm-run-all": "^4.1.5",
"typescript": "^4.3.5"
},
"devDependencies": {},
"main": "dist/extension.js",
"scripts": {
"build:clean": "rm -rf _build _target schemas/gschemas.compiled target",
"build:compile": "scripts/compile",
"build:convert": "scripts/convert",
"build:schemas": "glib-compile-schemas schemas",
"build:transpile": "npx tsc",
"build": "run-p build:clean && run-p build:transpile && run-p build:schemas && run-p build:convert && run-p build:compile",
"debug:nested_shell": "run-p build && run-p install-dev && scripts/nested_shell",
"debug": "run-p debug:nested_shell",
"disable": "gnome-extensions disable \"asusctl-gex@asus-linux.org\"",
"enable": "gnome-extensions enable \"asusctl-gex@asus-linux.org\"",
"install-user": "scripts/install",
"install-dev": "scripts/install dev",
"uninstall-local": "scripts/uninstall",
"zip": "scripts/zipit"
"clear": "rm -rf dist",
"build:app": "node esbuild.js",
"build": "yarn run clear && yarn run build:app",
"validate": "tsc --noEmit"
},
"devDependencies": {
"adm-zip": "^0.5.10",
"esbuild": "^0.17.19",
"typescript": "^5.0.4"
},
"dependencies": {
},
"repository": {
"type": "git",

View File

@@ -1,13 +0,0 @@
#!/bin/sh
rm -rf _build
mkdir -p _build/modules
mkdir -p _build/bindings
mkdir -p _build/resources
cp -r target/modules/*js _build/modules/
cp -r target/bindings/*.js _build/bindings/
cp -r metadata.json schemas target/*.js _build
cp -r ../../bindings/dbus-xml _build/resources/dbus
# cp -r icons resources *.css _build
# cp src/prefs.ui _build/
exit 0;

View File

@@ -1,30 +0,0 @@
#!/bin/sh
find target/ -type f -print0 | while IFS= read -r -d $'\0' file; do \
sed -i \
-e 's#export function#function#g' \
-e 's#export var#var#g' \
-e 's#export const#var#g' \
-e 's#Object.defineProperty(exports, "__esModule", { value: true });#var exports = {};#g' \
$file; \
sed -i -E 's|export class (\w+)|var \1 = class \1|g' $file; \
sed -i -E "s|import \* as (\w+) from '.\/(\w+)\/(\w+)'|const \1 = Me.imports.\2.\3|g" $file; \
sed -i -E "s|import \* as (\w+) from '..\/(\w+)\/(\w+)'|const \1 = Me.imports.\2.\3|g" $file; \
# root
sed -i -E "s|import \* as (\w+) from '.\/(\w+)'|const \1 = Me.imports.\2|g" $file; \
sed -i -E "s|import \* as (\w+) from '..\/(\w+)'|const \1 = Me.imports.\2|g" $file; \
sed -i -E "s|from '.\/modules\/(\w+)'|= Me.imports.modules.\1|g" $file; \
sed -i -E "s|from '..\/modules\/(\w+)'|= Me.imports.modules.\1|g" $file; \
sed -i -E "s|from '.\/bindings\/(\w+)'|= Me.imports.bindings.\1|g" $file; \
sed -i -E "s|from '..\/bindings\/(\w+)'|= Me.imports.bindings.\1|g" $file; \
sed -i -E "s|from '.\/(\w+)'|= Me.imports.\1|g" $file; \
sed -i -E "s|from '..\/(\w+)'|= Me.imports.\1|g" $file; \
sed -i -E "s|import \{|var \{|g" $file; \
done
exit 0;

View File

@@ -1,45 +0,0 @@
#!/bin/sh
isdev=false
for arg in "$@"; do
if [ "$arg" = "dev" ]; then
isdev=true
fi;
done
INSTALLBASE=~/.local/share/gnome-shell/extensions
UUID=`grep -E '^[ ]*"uuid":' _build/metadata.json | sed 's@^[ ]*"uuid":[ ]*"\(.\+\)",[ ]*@\1@'`
UUIDDEV=`grep -E '^[ ]*"uuid-dev":' _build/metadata.json | sed 's@^[ ]*"uuid-dev":[ ]*"\(.\+\)",[ ]*@\1@'`
GV=`gnome-shell --version | awk '{print $3}'`
if $isdev
then
sed -i "s/${UUID}/${UUIDDEV}/g" _build/metadata.json
rm -fr "${INSTALLBASE}/${UUID}"
UUID=$UUIDDEV
else
rm -fr "${INSTALLBASE}/${UUIDDEV}"
fi
if [ -d "${INSTALLBASE}/${UUID}" ]; then
rm -rf "${INSTALLBASE}/${UUID}/*"
else
mkdir -p "${INSTALLBASE}/${UUID}"
fi
cp -r _build/* "${INSTALLBASE}/${UUID}/"
gnome-extensions info "${UUID}"
INSTALLED="$?"
if [ "$INSTALLED" -eq 0 ]; then
echo "reset"
gnome-extensions reset "${UUID}"
echo "enable"
gnome-extensions enable "${UUID}"
echo "Please restart GNOME Shell if you are on X11 or logout and login again when you use Wayland."
else
echo "You probably install the extension for the first time. Please restart GNOME Shell or Logout and enable the extension via the Extensions app or extensions.gnome.org."
fi
exit 0;

View File

@@ -1,3 +0,0 @@
#!/bin/bash
MUTTER_DEBUG_DUMMY_MODE_SPECS=1366x768 dbus-run-session -- gnome-shell --nested --wayland
exit 0

View File

@@ -1,8 +0,0 @@
#!/bin/sh
UUID=`grep -E '^[ ]*"uuid":' metadata.json | sed 's@^[ ]*"uuid":[ ]*"\(.\+\)",[ ]*@\1@'`
INSTALLBASE=~/.local/share/gnome-shell/extensions
gnome-extensions disable "$UUID"
rm -rf "$INSTALLBASE/$UUID"
exit 0;

View File

@@ -1,7 +0,0 @@
#!/bin/sh
UUID=`grep -E '^[ ]*"uuid":' metadata.json | sed 's@^[ ]*"uuid":[ ]*"\(.\+\)",[ ]*@\1@'`
VSTRING=`grep -E '^[ ]*"version":' metadata.json | sed 's@^[ ]*"version":[ ]*"\(.\+\)",[ ]*@\1@'`
rm *.zip
cd _build && zip -qr "../$UUID.zip" .
exit 0;

View File

@@ -1,5 +1,5 @@
declare const global: any, imports: any;
declare var asusctlGexInstance: any;
declare const imports: any;
var asusctlGexInstance: any;
//@ts-ignore
const Me = imports.misc.extensionUtils.getCurrentExtension();

View File

@@ -1,7 +1,7 @@
{
"name": "asusctl-gex",
"description": "asusctl-gex is a frontend for some functionalities of asusctl and supergfxctl that were born inside the asus-linux.org community.\n\nasusctl is required.\n\nTo learn more about it, please have a look at:\nhttps://gitlab.com/asus-linux/asusctl\nhttps://gitlab.com/asus-linux/asusctl-gex\n\nhttps://asus-linux.org/",
"uuid": "asusctl-gex@asus-linux.org",
"uuid": "asusctl-gex-dev@asus-linux.org",
"uuid-dev": "asusctl-gex-dev@asus-linux.org",
"settings-schema": "org.gnome.shell.extensions.asusctl-gex",
"version": "4.3.2",

View File

@@ -1,26 +1,18 @@
{
"compileOnSave": true,
"compilerOptions": {
"target": "es2019",
// "module": "ES2015",
"moduleResolution": "node",
// "rootDir": "./",
"strict": true,
"outDir": "./target",
"forceConsistentCasingInFileNames": true,
"downlevelIteration": true,
"lib": [ "es2019" ],
"pretty": true,
"sourceMap": true,
"declaration": true,
"removeComments": true,
"incremental": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"allowJs": true
},
"include": [
"src/*.ts",
"src/**/*.ts"
]
"compilerOptions": {
"lib": ["es2019"],
"types": [],
"target": "es2019",
"module": "CommonJS",
"moduleResolution": "node",
"declaration": true,
"removeComments": true,
"strict": true,
"allowJs": true
},
"include": [],
"files": [
"src/*.ts",
"src/**/*.ts"
]
}