File: install-i18n.py

package info (click to toggle)
eric 23.2%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 95,096 kB
  • sloc: python: 253,898; javascript: 309; xml: 215; makefile: 32
file content (128 lines) | stat: -rw-r--r-- 3,114 bytes parent folder | download | duplicates (2)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Copyright (c) 2004 - 2023 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