From 80ac32a26838e3284aac0deae9f5ccff1550f0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 25 May 2023 21:23:24 +0200 Subject: [PATCH] extensions-app: Port to ESM The extensions app is another part of the code base that is largely separate from the main code base, and can therefore be ported to ESM before the big switch. Part-of: --- .eslintrc.yml | 1 + .../extensions-app/js/gnome-extensions-app.in | 2 +- subprojects/extensions-app/js/main.js | 20 ++++++++++++------- .../extensions-app/js/org.gnome.Extensions.in | 6 +++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index f1edc4dcf..4fdede665 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -5,5 +5,6 @@ overrides: - files: - js/ui/init.js - js/dbusServices/** + - subprojects/extensions-app/** parserOptions: sourceType: module diff --git a/subprojects/extensions-app/js/gnome-extensions-app.in b/subprojects/extensions-app/js/gnome-extensions-app.in index dc6d62760..99d23204d 100644 --- a/subprojects/extensions-app/js/gnome-extensions-app.in +++ b/subprojects/extensions-app/js/gnome-extensions-app.in @@ -1,2 +1,2 @@ #!/bin/sh -@gjs@ @pkgdatadir@/@app_id@ "$@" +@gjs@ -m @pkgdatadir@/@app_id@ "$@" diff --git a/subprojects/extensions-app/js/main.js b/subprojects/extensions-app/js/main.js index dababa71a..912471ae8 100644 --- a/subprojects/extensions-app/js/main.js +++ b/subprojects/extensions-app/js/main.js @@ -1,10 +1,12 @@ -/* exported main */ -imports.gi.versions.Adw = '1'; -imports.gi.versions.Gtk = '4.0'; +import Adw from 'gi://Adw?version=1'; +import GLib from 'gi://GLib'; +import Gio from 'gi://Gio'; +import GObject from 'gi://GObject'; +import Gtk from 'gi://Gtk?version=4.0'; +import Shew from 'gi://Shew'; -const Gettext = imports.gettext; +import * as Gettext from 'gettext'; const Package = imports.package; -const { Adw, GLib, Gio, GObject, Gtk, Shew } = imports.gi; Package.initFormat(); @@ -540,9 +542,13 @@ function initEnvironment() { }; } -function main(argv) { +/** + * @param {string[]} argv - command line arguments + * @returns {void} + */ +export async function main(argv) { initEnvironment(); Package.initGettext(); - new Application().run(argv); + await new Application().runAsync(argv); } diff --git a/subprojects/extensions-app/js/org.gnome.Extensions.in b/subprojects/extensions-app/js/org.gnome.Extensions.in index da7ab2512..182393596 100644 --- a/subprojects/extensions-app/js/org.gnome.Extensions.in +++ b/subprojects/extensions-app/js/org.gnome.Extensions.in @@ -1,6 +1,10 @@ -imports.package.start({ +import {programInvocationName, programArgs} from 'system'; + +imports.package.init({ name: '@PACKAGE_NAME@', version: '@PACKAGE_VERSION@', prefix: '@prefix@', libdir: '@libdir@', }); +const {main} = await import(`${imports.package.moduledir}/main.js`); +await main([programInvocationName, ...programArgs]);