File: main.py

package info (click to toggle)
metadata-cleaner 2.5.2%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,968 kB
  • sloc: python: 1,442; xml: 213; makefile: 3
file content (77 lines) | stat: -rwxr-xr-x 1,900 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python3

# SPDX-FileCopyrightText: Metadata Cleaner contributors
# SPDX-License-Identifier: GPL-3.0-or-later

"""Entry script for Metadata Cleaner."""

import gettext
import gi
import locale
import logging
import mimetypes
import os
import signal
import sys

gi.require_version("Gdk", "4.0")
gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1")


APP_ID = "@app_id@"
DEVEL = "@devel@" == "True"
VERSION = "@version@"
LOCALE_DIR = "@localedir@"
PKGDATA_DIR = "@pkgdatadir@"
PKGSRC_DIR = "@pkgsrcdir@"

sys.path.insert(1, PKGSRC_DIR)


def setup_i18n() -> None:
    """Set the text domain for translations."""
    try:
        locale.bindtextdomain(APP_ID, LOCALE_DIR)  # type: ignore
        locale.textdomain(APP_ID)  # type: ignore
    except AttributeError as e:
        logging.warning(
            f"Unable to set the gettext translation domain.\nError:\n{e}")
    gettext.bindtextdomain(APP_ID, LOCALE_DIR)
    gettext.textdomain(APP_ID)


def setup_resources() -> None:
    """Load the application resources."""
    from gi.repository import Gio
    resource = Gio.Resource.load(
        os.path.join(PKGDATA_DIR, f"{APP_ID}.gresource"))
    Gio.Resource._register(resource)


def setup_mimetypes() -> None:
    """Add a mime.types file for the Flatpak runtime."""
    if os.path.exists("/.flatpak-info"):
        mimetypes.init(files=mimetypes.knownfiles + ["/app/share/mime.types"])


def run_app() -> int:
    """Run the application.

    Returns:
        int: Exit status
    """
    from metadatacleaner.app import MetadataCleaner
    app = MetadataCleaner(application_id=APP_ID, devel=DEVEL, version=VERSION)
    signal.signal(signal.SIGINT, signal.SIG_DFL)
    exit_status = app.run(sys.argv)
    return exit_status


if __name__ == "__main__":
    setup_i18n()
    setup_resources()
    setup_mimetypes()

    exit_status = run_app()
    sys.exit(exit_status)