scripts/install-i18n.py

Wed, 30 Nov 2022 16:20:18 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 30 Nov 2022 16:20:18 +0100
branch
eric7-maintenance
changeset 9553
1e1a5cf4fafc
parent 9482
a2bc06a54d9d
permissions
-rw-r--r--

Re-merged with branch 'eric7' to prepare a new release.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Copyright (c) 2004 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
#
# This is the install script for eric's translation files.

"""
Installation script for the eric IDE translation files.
"""

import getopt
import glob
import os
import shutil
import sys

try:
    from eric7.Globals import getConfig
except ImportError:
    print("The eric IDE doesn't seem to be installed. Aborting.")
    sys.exit(1)
except SyntaxError:
    # an incomplete or old config file was found
    print("The eric IDE seems to be installed incompletely. Aborting.")
    sys.exit(1)


def getConfigDir():
    """
    Global function to get the name of the directory storing the config data.

    @return directory name of the config dir (string)
    """
    cdn = ".eric7"

    hp = os.path.join(os.path.expanduser("~"), cdn)
    if not os.path.exists(hp):
        os.mkdir(hp)
    return hp


# Define the globals.
progName = None
configDir = getConfigDir()
privateInstall = False


def usage(rcode=2):
    """
    Display a usage message and exit.

    @param rcode return code passed back to the calling process (integer)
    """
    global progName, configDir

    print()
    print("Usage:")
    print("    {0} [-hp]".format(progName))
    print("where:")
    print("    -h        display this help message")
    print("    -p        install into the private area ({0})".format(configDir))

    sys.exit(rcode)


def installTranslations():
    """
    Install the translation files into the right place.
    """
    global privateInstall, configDir

    targetDir = configDir if privateInstall else getConfig("ericTranslationsDir")

    try:
        for fn in glob.glob(os.path.join("eric", "src", "eric7", "i18n", "*.qm")):
            shutil.copy2(fn, targetDir)
            os.chmod(os.path.join(targetDir, os.path.basename(fn)), 0o644)
    except OSError as msg:
        if sys.platform.startswith(("win", "cygwin")):
            sys.stderr.write(
                "OSError: {0}\nTry install-i18n with admin rights.\n".format(msg)
            )
        else:
            sys.stderr.write("OSError: {0}\nTry install-i18n as root.\n".format(msg))


def main(argv):
    """
    The main function of the script.

    @param argv list of command line arguments (list of strings)
    """
    # Parse the command line.
    global progName, privateInstall
    progName = os.path.basename(argv[0])

    try:
        optlist, args = getopt.getopt(argv[1:], "hp")
    except getopt.GetoptError:
        usage()

    global platBinDir

    for opt, _arg in optlist:
        if opt == "-h":
            usage(0)
        elif opt == "-p":
            privateInstall = 1

    installTranslations()


if __name__ == "__main__":
    try:
        main(sys.argv)
    except SystemExit:
        raise
    except Exception:
        print(
            """An internal error occured.  Please report all the output of"""
            """ the program,\nincluding the following traceback, to"""
            """ eric-bugs@eric-ide.python-projects.org.\n"""
        )
        raise

#
# eflag: noqa = M801

eric ide

mercurial